From a0a7e57893f3451aa4db07784742e4e33bee6fdd Mon Sep 17 00:00:00 2001 From: Minsu Kwon Date: Wed, 11 Feb 2026 13:48:18 +0900 Subject: [PATCH 01/10] =?UTF-8?q?[refactor]cloudfront=20=EB=B0=A9=EC=8B=9D?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/image/service/ImageUploadService.java | 2 +- .../api/ocr/service/S3ImageContentLoader.java | 2 +- .../global/{ => S3}/config/S3Config.java | 11 +-- .../global/{ => S3}/config/S3Properties.java | 5 +- .../{common => S3}/exception/S3ErrorCode.java | 5 +- .../global/{ => S3}/service/S3Service.java | 88 +++++++------------ .../{config => S3/test}/TestS3Config.java | 14 +-- src/main/resources/application.yaml | 1 + 8 files changed, 47 insertions(+), 81 deletions(-) rename src/main/java/com/deare/backend/global/{ => S3}/config/S3Config.java (74%) rename src/main/java/com/deare/backend/global/{ => S3}/config/S3Properties.java (67%) rename src/main/java/com/deare/backend/global/{common => S3}/exception/S3ErrorCode.java (85%) rename src/main/java/com/deare/backend/global/{ => S3}/service/S3Service.java (72%) rename src/main/java/com/deare/backend/global/{config => S3/test}/TestS3Config.java (75%) diff --git a/src/main/java/com/deare/backend/api/image/service/ImageUploadService.java b/src/main/java/com/deare/backend/api/image/service/ImageUploadService.java index 8ff2d44d..44d26628 100644 --- a/src/main/java/com/deare/backend/api/image/service/ImageUploadService.java +++ b/src/main/java/com/deare/backend/api/image/service/ImageUploadService.java @@ -7,7 +7,7 @@ import com.deare.backend.domain.image.exception.ImageErrorCode; import com.deare.backend.domain.image.repository.ImageRepository; import com.deare.backend.global.common.exception.GeneralException; -import com.deare.backend.global.service.S3Service; +import com.deare.backend.global.S3.service.S3Service; import jakarta.transaction.Transactional; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; diff --git a/src/main/java/com/deare/backend/api/ocr/service/S3ImageContentLoader.java b/src/main/java/com/deare/backend/api/ocr/service/S3ImageContentLoader.java index 410e0b0f..75568b29 100644 --- a/src/main/java/com/deare/backend/api/ocr/service/S3ImageContentLoader.java +++ b/src/main/java/com/deare/backend/api/ocr/service/S3ImageContentLoader.java @@ -1,6 +1,6 @@ package com.deare.backend.api.ocr.service; -import com.deare.backend.global.service.S3Service; +import com.deare.backend.global.S3.service.S3Service; import lombok.RequiredArgsConstructor; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/deare/backend/global/config/S3Config.java b/src/main/java/com/deare/backend/global/S3/config/S3Config.java similarity index 74% rename from src/main/java/com/deare/backend/global/config/S3Config.java rename to src/main/java/com/deare/backend/global/S3/config/S3Config.java index 1ca89015..0326401f 100644 --- a/src/main/java/com/deare/backend/global/config/S3Config.java +++ b/src/main/java/com/deare/backend/global/S3/config/S3Config.java @@ -1,4 +1,4 @@ -package com.deare.backend.global.config; +package com.deare.backend.global.S3.config; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; @@ -8,7 +8,6 @@ import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.s3.S3Client; import software.amazon.awssdk.services.s3.presigner.S3Presigner; -import org.springframework.context.annotation.Profile; @Configuration @@ -29,12 +28,4 @@ public S3Client s3Client(S3Properties props, DefaultCredentialsProvider cp) { .credentialsProvider(cp) .build(); } - - @Bean - public S3Presigner s3Presigner(S3Properties props, DefaultCredentialsProvider cp) { - return S3Presigner.builder() - .region(Region.of(props.region())) - .credentialsProvider(cp) - .build(); - } } diff --git a/src/main/java/com/deare/backend/global/config/S3Properties.java b/src/main/java/com/deare/backend/global/S3/config/S3Properties.java similarity index 67% rename from src/main/java/com/deare/backend/global/config/S3Properties.java rename to src/main/java/com/deare/backend/global/S3/config/S3Properties.java index ce96e567..0f96b084 100644 --- a/src/main/java/com/deare/backend/global/config/S3Properties.java +++ b/src/main/java/com/deare/backend/global/S3/config/S3Properties.java @@ -1,4 +1,4 @@ -package com.deare.backend.global.config; +package com.deare.backend.global.S3.config; import org.springframework.boot.context.properties.ConfigurationProperties; @@ -6,5 +6,6 @@ public record S3Properties( boolean enabled, String bucket, - String region + String region, + String cloudfrontDomain ) {} diff --git a/src/main/java/com/deare/backend/global/common/exception/S3ErrorCode.java b/src/main/java/com/deare/backend/global/S3/exception/S3ErrorCode.java similarity index 85% rename from src/main/java/com/deare/backend/global/common/exception/S3ErrorCode.java rename to src/main/java/com/deare/backend/global/S3/exception/S3ErrorCode.java index ca7d3ae8..ff10359a 100644 --- a/src/main/java/com/deare/backend/global/common/exception/S3ErrorCode.java +++ b/src/main/java/com/deare/backend/global/S3/exception/S3ErrorCode.java @@ -1,5 +1,6 @@ -package com.deare.backend.global.common.exception; +package com.deare.backend.global.S3.exception; +import com.deare.backend.global.common.exception.BaseErrorCode; import org.springframework.http.HttpStatus; public enum S3ErrorCode implements BaseErrorCode { @@ -15,7 +16,7 @@ public enum S3ErrorCode implements BaseErrorCode { IO_ERROR(HttpStatus.INTERNAL_SERVER_ERROR, "S3_50001", "파일 처리 중 오류가 발생했습니다."), UPLOAD_FAILED(HttpStatus.INTERNAL_SERVER_ERROR, "S3_50002", "S3 업로드에 실패했습니다."), DELETE_FAILED(HttpStatus.INTERNAL_SERVER_ERROR, "S3_50003", "S3 삭제에 실패했습니다."), - PRESIGN_FAILED(HttpStatus.INTERNAL_SERVER_ERROR, "S3_50004", "Presigned URL 생성에 실패했습니다."), + CLOUDFRONT_FAILED(HttpStatus.INTERNAL_SERVER_ERROR, "S3_50004", "URL 생성에 실패했습니다."), DOWNLOAD_FAILED(HttpStatus.INTERNAL_SERVER_ERROR, "S3_50005", "S3 파일 다운로드에 실패했습니다."); private final HttpStatus status; diff --git a/src/main/java/com/deare/backend/global/service/S3Service.java b/src/main/java/com/deare/backend/global/S3/service/S3Service.java similarity index 72% rename from src/main/java/com/deare/backend/global/service/S3Service.java rename to src/main/java/com/deare/backend/global/S3/service/S3Service.java index d18ef784..2598dead 100644 --- a/src/main/java/com/deare/backend/global/service/S3Service.java +++ b/src/main/java/com/deare/backend/global/S3/service/S3Service.java @@ -1,12 +1,11 @@ -package com.deare.backend.global.service; +package com.deare.backend.global.S3.service; import com.deare.backend.global.common.exception.GeneralException; -import com.deare.backend.global.common.exception.S3ErrorCode; -import com.deare.backend.global.config.S3Properties; +import com.deare.backend.global.S3.exception.S3ErrorCode; +import com.deare.backend.global.S3.config.S3Properties; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.context.annotation.Profile; import org.springframework.http.MediaType; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; @@ -15,12 +14,7 @@ import software.amazon.awssdk.services.s3.S3Client; import software.amazon.awssdk.services.s3.model.*; -import software.amazon.awssdk.services.s3.presigner.S3Presigner; -import software.amazon.awssdk.services.s3.presigner.model.GetObjectPresignRequest; -import software.amazon.awssdk.services.s3.presigner.model.PresignedGetObjectRequest; - import java.io.IOException; -import java.time.Duration; import java.util.UUID; @ConditionalOnProperty(name = "aws.s3.enabled", havingValue = "true") @@ -30,12 +24,10 @@ public class S3Service { private static final Logger log = LoggerFactory.getLogger(S3Service.class); private final S3Client s3Client; - private final S3Presigner presigner; private final S3Properties props; - public S3Service(S3Client s3Client, S3Presigner presigner, S3Properties props) { + public S3Service(S3Client s3Client, S3Properties props) { this.s3Client = s3Client; - this.presigner = presigner; this.props = props; } @@ -60,16 +52,20 @@ public UploadedFile upload(MultipartFile file, String dir) { .contentLength(contentLength) .build(); - s3Client.putObject(putReq, RequestBody.fromInputStream(inputStream, contentLength)); + s3Client.putObject( + putReq, + RequestBody.fromInputStream(inputStream, contentLength) + ); - String url = presignGetUrl(key, Duration.ofMinutes(10)); + String url = buildCloudFrontUrl(key); return new UploadedFile(key, url); } catch (IOException e) { log.warn("[S3] IO error while reading file. key={}", key, e); throw new GeneralException(S3ErrorCode.IO_ERROR); } catch (S3Exception e) { - log.error("[S3] Upload failed. status={} awsErrorCode={} message={}", + log.error("[S3] Upload failed. key={} status={} awsErrorCode={} message={}", + key, e.statusCode(), e.awsErrorDetails() != null ? e.awsErrorDetails().errorCode() : "null", e.getMessage(), @@ -104,31 +100,44 @@ public void delete(String key) { } } - private String presignGetUrl(String key, Duration ttl) { + public byte[] downloadBytes(String key) { + if (key == null || key.isBlank()) { + throw new GeneralException(S3ErrorCode.EMPTY_KEY); + } + try { GetObjectRequest getReq = GetObjectRequest.builder() .bucket(props.bucket()) .key(key) .build(); - GetObjectPresignRequest presignReq = GetObjectPresignRequest.builder() - .signatureDuration(ttl) - .getObjectRequest(getReq) - .build(); - - PresignedGetObjectRequest presigned = presigner.presignGetObject(presignReq); - return presigned.url().toString(); + ResponseBytes bytes = s3Client.getObjectAsBytes(getReq); + return bytes.asByteArray(); + } catch (NoSuchKeyException e) { + log.warn("[S3] Object not found. key={}", key, e); + throw new GeneralException(S3ErrorCode.NOT_FOUND); } catch (S3Exception e) { - log.error("[S3] Presign failed. key={} status={} awsErrorCode={} message={}", + log.error("[S3] Download failed. key={} status={} awsErrorCode={} message={}", key, e.statusCode(), e.awsErrorDetails() != null ? e.awsErrorDetails().errorCode() : "null", e.getMessage(), e ); - throw new GeneralException(S3ErrorCode.PRESIGN_FAILED); + throw new GeneralException(S3ErrorCode.DOWNLOAD_FAILED); + } + } + + private String buildCloudFrontUrl(String key) { + String cf = props.cloudfrontDomain(); + if (cf == null || cf.isBlank()) { + throw new GeneralException(S3ErrorCode.EMPTY_KEY); // 에러코드 없으면 임시로 이거 쓰고, 가능하면 CONFIG 에러코드 추가 추천 } + + String base = cf.endsWith("/") ? cf.substring(0, cf.length() - 1) : cf; + String path = key.startsWith("/") ? key : "/" + key; + return base + path; } private String buildKey(String dir, String originalFilename) { @@ -146,33 +155,4 @@ private String buildKey(String dir, String originalFilename) { } public record UploadedFile(String key, String url) {} - - public byte[] downloadBytes(String key) { - if (key == null || key.isBlank()) { - throw new GeneralException(S3ErrorCode.EMPTY_KEY); - } - - try { - GetObjectRequest getReq = GetObjectRequest.builder() - .bucket(props.bucket()) - .key(key) - .build(); - - ResponseBytes bytes = s3Client.getObjectAsBytes(getReq); - return bytes.asByteArray(); - - } catch (NoSuchKeyException e) { - log.warn("[S3] Object not found. key={}", key, e); - throw new GeneralException(S3ErrorCode.NOT_FOUND); - } catch (S3Exception e) { - log.error("[S3] Download failed. key={} status={} awsErrorCode={} message={}", - key, - e.statusCode(), - e.awsErrorDetails() != null ? e.awsErrorDetails().errorCode() : "null", - e.getMessage(), - e - ); - throw new GeneralException(S3ErrorCode.DOWNLOAD_FAILED); - } - } } diff --git a/src/main/java/com/deare/backend/global/config/TestS3Config.java b/src/main/java/com/deare/backend/global/S3/test/TestS3Config.java similarity index 75% rename from src/main/java/com/deare/backend/global/config/TestS3Config.java rename to src/main/java/com/deare/backend/global/S3/test/TestS3Config.java index 28bb87a9..2e93f0eb 100644 --- a/src/main/java/com/deare/backend/global/config/TestS3Config.java +++ b/src/main/java/com/deare/backend/global/S3/test/TestS3Config.java @@ -1,5 +1,6 @@ -package com.deare.backend.global.config; +package com.deare.backend.global.S3.test; +import com.deare.backend.global.S3.config.S3Properties; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; @@ -9,7 +10,7 @@ import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.s3.S3Client; -import software.amazon.awssdk.services.s3.presigner.S3Presigner; + @Configuration @Profile("test") @EnableConfigurationProperties(S3Properties.class) @@ -30,13 +31,4 @@ public S3Client s3Client(S3Properties props, DefaultCredentialsProvider cp) { .credentialsProvider(cp) .build(); } - - @Bean - @Primary - public S3Presigner s3Presigner(S3Properties props, DefaultCredentialsProvider cp) { - return S3Presigner.builder() - .region(Region.of(props.region())) - .credentialsProvider(cp) - .build(); - } } \ No newline at end of file diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml index d33fe5cc..800a2d53 100644 --- a/src/main/resources/application.yaml +++ b/src/main/resources/application.yaml @@ -47,6 +47,7 @@ aws: region: ${AWS_REGION} access-key: ${AWS_ACCESS_KEY_ID} secret-key: ${AWS_SECRET_ACCESS_KEY} + cloudfront-domain: ${AWS_CLOUDFRONT_DOMAIN} enabled: true ocr: From 935f7e238e274a6a67637b78d28fad23e39b9bf2 Mon Sep 17 00:00:00 2001 From: Minsu Kwon Date: Wed, 11 Feb 2026 13:51:38 +0900 Subject: [PATCH 02/10] =?UTF-8?q?[refactor]=EC=9D=B4=EB=AF=B8=EC=A7=80?= =?UTF-8?q?=EC=97=85=EB=A1=9C=EB=93=9C=20cloudfront=20=EB=B0=A9=EC=8B=9D?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/deare/backend/global/S3/service/S3Service.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/deare/backend/global/S3/service/S3Service.java b/src/main/java/com/deare/backend/global/S3/service/S3Service.java index 2598dead..3d20f49d 100644 --- a/src/main/java/com/deare/backend/global/S3/service/S3Service.java +++ b/src/main/java/com/deare/backend/global/S3/service/S3Service.java @@ -132,7 +132,7 @@ public byte[] downloadBytes(String key) { private String buildCloudFrontUrl(String key) { String cf = props.cloudfrontDomain(); if (cf == null || cf.isBlank()) { - throw new GeneralException(S3ErrorCode.EMPTY_KEY); // 에러코드 없으면 임시로 이거 쓰고, 가능하면 CONFIG 에러코드 추가 추천 + throw new GeneralException(S3ErrorCode.EMPTY_KEY); } String base = cf.endsWith("/") ? cf.substring(0, cf.length() - 1) : cf; From ceca8d35f8635d940b5289683767c589991c6b9f Mon Sep 17 00:00:00 2001 From: Minsu Kwon Date: Wed, 11 Feb 2026 14:00:54 +0900 Subject: [PATCH 03/10] =?UTF-8?q?test-yaml=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/resources/application-test.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/src/test/resources/application-test.yaml b/src/test/resources/application-test.yaml index fc332d70..7dc3c255 100644 --- a/src/test/resources/application-test.yaml +++ b/src/test/resources/application-test.yaml @@ -47,6 +47,7 @@ aws: s3: bucket: ${AWS_S3_BUCKET} region: ${AWS_REGION} + cloudfront-domain: ${AWS_CLOUDFRONT_DOMAIN} enabled: false ocr: From 64bda1bf907d622d6e263d8d0375981d9b5bf8f3 Mon Sep 17 00:00:00 2001 From: Minsu Kwon Date: Wed, 11 Feb 2026 14:26:24 +0900 Subject: [PATCH 04/10] pull --- src/main/java/com/deare/backend/global/S3/service/S3Service.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/deare/backend/global/S3/service/S3Service.java b/src/main/java/com/deare/backend/global/S3/service/S3Service.java index 3d20f49d..ed8d11ab 100644 --- a/src/main/java/com/deare/backend/global/S3/service/S3Service.java +++ b/src/main/java/com/deare/backend/global/S3/service/S3Service.java @@ -134,7 +134,6 @@ private String buildCloudFrontUrl(String key) { if (cf == null || cf.isBlank()) { throw new GeneralException(S3ErrorCode.EMPTY_KEY); } - String base = cf.endsWith("/") ? cf.substring(0, cf.length() - 1) : cf; String path = key.startsWith("/") ? key : "/" + key; return base + path; From 8a7d513f694248a51fad8a2837c982a7690cca9f Mon Sep 17 00:00:00 2001 From: Minsu Kwon Date: Wed, 11 Feb 2026 14:37:03 +0900 Subject: [PATCH 05/10] =?UTF-8?q?application=20yaml=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/application.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml index cc79f72f..800a2d53 100644 --- a/src/main/resources/application.yaml +++ b/src/main/resources/application.yaml @@ -49,7 +49,6 @@ aws: secret-key: ${AWS_SECRET_ACCESS_KEY} cloudfront-domain: ${AWS_CLOUDFRONT_DOMAIN} enabled: true - cloudfront-domain: ${AWS_CLOUDFRONT_DOMAIN} ocr: enabled: true From 7c83075a630d322c1f1179d2339b3e1e49c503af Mon Sep 17 00:00:00 2001 From: Minsu Kwon Date: Thu, 12 Feb 2026 01:03:26 +0900 Subject: [PATCH 06/10] =?UTF-8?q?=EB=A6=AC=EB=B7=B0=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/deare/backend/global/S3/service/S3Service.java | 2 +- src/main/resources/application.yaml | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/java/com/deare/backend/global/S3/service/S3Service.java b/src/main/java/com/deare/backend/global/S3/service/S3Service.java index ed8d11ab..73d1a525 100644 --- a/src/main/java/com/deare/backend/global/S3/service/S3Service.java +++ b/src/main/java/com/deare/backend/global/S3/service/S3Service.java @@ -132,7 +132,7 @@ public byte[] downloadBytes(String key) { private String buildCloudFrontUrl(String key) { String cf = props.cloudfrontDomain(); if (cf == null || cf.isBlank()) { - throw new GeneralException(S3ErrorCode.EMPTY_KEY); + throw new GeneralException(S3ErrorCode.CLOUDFRONT_FAILED); } String base = cf.endsWith("/") ? cf.substring(0, cf.length() - 1) : cf; String path = key.startsWith("/") ? key : "/" + key; diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml index e810146b..61097350 100644 --- a/src/main/resources/application.yaml +++ b/src/main/resources/application.yaml @@ -45,8 +45,6 @@ aws: s3: bucket: ${AWS_S3_BUCKET} region: ${AWS_REGION} - access-key: ${AWS_ACCESS_KEY_ID} - secret-key: ${AWS_SECRET_ACCESS_KEY} cloudfront-domain: ${AWS_CLOUDFRONT_DOMAIN} enabled: true From 2afb01a0a55e56083f41d908d681bb93a1a5e53c Mon Sep 17 00:00:00 2001 From: Minsu Kwon Date: Thu, 12 Feb 2026 01:21:13 +0900 Subject: [PATCH 07/10] =?UTF-8?q?dto=20request=20response=20result=20?= =?UTF-8?q?=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../backend/api/from/controller/FromController.java | 7 ++++++- .../from/dto/{ => request}/FromCreateRequestDTO.java | 2 +- .../from/dto/{ => request}/FromUpdateRequestDTO.java | 2 +- .../dto/{ => response}/FromCreateResponseDTO.java | 2 +- .../dto/{ => response}/FromDeleteResponseDTO.java | 2 +- .../from/dto/{ => response}/FromListResponseDTO.java | 2 +- .../api/from/dto/{ => response}/FromResponseDTO.java | 2 +- .../dto/{ => response}/FromUpdateResponseDTO.java | 2 +- .../deare/backend/api/from/service/FromService.java | 7 ++++++- .../backend/api/home/controller/HomeController.java | 2 +- .../dto/{ => response}/HomeDashboardResponse.java | 5 ++++- .../api/home/dto/result/HomeDashboardDTO.java | 9 +++++++++ .../api/home/dto/{ => result}/HomeSettingDto.java | 2 +- .../api/home/dto/{ => result}/HomeStickerDto.java | 2 +- .../api/home/dto/{ => result}/HomeUserDto.java | 2 +- .../deare/backend/api/home/service/HomeService.java | 8 ++++---- .../api/image/controller/ImageController.java | 2 +- .../dto/{ => response}/ImageUploadResponseDTO.java | 2 +- .../api/image/service/ImageUploadService.java | 2 +- .../api/sticker/controller/StickerController.java | 8 ++++++-- .../backend/api/sticker/dto/StickerDeleteDTO.java | 5 ----- .../dto/{ => request}/StickerCreateRequestDTO.java | 2 +- .../dto/{ => request}/StickerUpdateRequestDTO.java | 2 +- .../dto/{ => response}/StickerCreateResponseDTO.java | 2 +- .../dto/response/StickerDeleteResponseDTO.java | 5 +++++ .../dto/{ => response}/StickerUpdateResponseDTO.java | 2 +- .../backend/api/sticker/service/StickerService.java | 8 ++++++-- .../api/sticker/service/StickerServiceImpl.java | 12 +++++++----- .../from/repository/query/FromQueryRepository.java | 2 +- 29 files changed, 72 insertions(+), 40 deletions(-) rename src/main/java/com/deare/backend/api/from/dto/{ => request}/FromCreateRequestDTO.java (94%) rename src/main/java/com/deare/backend/api/from/dto/{ => request}/FromUpdateRequestDTO.java (93%) rename src/main/java/com/deare/backend/api/from/dto/{ => response}/FromCreateResponseDTO.java (56%) rename src/main/java/com/deare/backend/api/from/dto/{ => response}/FromDeleteResponseDTO.java (56%) rename src/main/java/com/deare/backend/api/from/dto/{ => response}/FromListResponseDTO.java (67%) rename src/main/java/com/deare/backend/api/from/dto/{ => response}/FromResponseDTO.java (75%) rename src/main/java/com/deare/backend/api/from/dto/{ => response}/FromUpdateResponseDTO.java (80%) rename src/main/java/com/deare/backend/api/home/dto/{ => response}/HomeDashboardResponse.java (52%) create mode 100644 src/main/java/com/deare/backend/api/home/dto/result/HomeDashboardDTO.java rename src/main/java/com/deare/backend/api/home/dto/{ => result}/HomeSettingDto.java (75%) rename src/main/java/com/deare/backend/api/home/dto/{ => result}/HomeStickerDto.java (88%) rename src/main/java/com/deare/backend/api/home/dto/{ => result}/HomeUserDto.java (82%) rename src/main/java/com/deare/backend/api/image/dto/{ => response}/ImageUploadResponseDTO.java (67%) delete mode 100644 src/main/java/com/deare/backend/api/sticker/dto/StickerDeleteDTO.java rename src/main/java/com/deare/backend/api/sticker/dto/{ => request}/StickerCreateRequestDTO.java (81%) rename src/main/java/com/deare/backend/api/sticker/dto/{ => request}/StickerUpdateRequestDTO.java (79%) rename src/main/java/com/deare/backend/api/sticker/dto/{ => response}/StickerCreateResponseDTO.java (57%) create mode 100644 src/main/java/com/deare/backend/api/sticker/dto/response/StickerDeleteResponseDTO.java rename src/main/java/com/deare/backend/api/sticker/dto/{ => response}/StickerUpdateResponseDTO.java (57%) diff --git a/src/main/java/com/deare/backend/api/from/controller/FromController.java b/src/main/java/com/deare/backend/api/from/controller/FromController.java index af4578b3..a3cef32e 100644 --- a/src/main/java/com/deare/backend/api/from/controller/FromController.java +++ b/src/main/java/com/deare/backend/api/from/controller/FromController.java @@ -1,6 +1,11 @@ package com.deare.backend.api.from.controller; -import com.deare.backend.api.from.dto.*; +import com.deare.backend.api.from.dto.request.FromCreateRequestDTO; +import com.deare.backend.api.from.dto.request.FromUpdateRequestDTO; +import com.deare.backend.api.from.dto.response.FromCreateResponseDTO; +import com.deare.backend.api.from.dto.response.FromDeleteResponseDTO; +import com.deare.backend.api.from.dto.response.FromListResponseDTO; +import com.deare.backend.api.from.dto.response.FromUpdateResponseDTO; import com.deare.backend.api.from.service.FromService; import com.deare.backend.global.auth.util.SecurityUtil; import com.deare.backend.global.common.response.ApiResponse; diff --git a/src/main/java/com/deare/backend/api/from/dto/FromCreateRequestDTO.java b/src/main/java/com/deare/backend/api/from/dto/request/FromCreateRequestDTO.java similarity index 94% rename from src/main/java/com/deare/backend/api/from/dto/FromCreateRequestDTO.java rename to src/main/java/com/deare/backend/api/from/dto/request/FromCreateRequestDTO.java index 5d251544..f771859f 100644 --- a/src/main/java/com/deare/backend/api/from/dto/FromCreateRequestDTO.java +++ b/src/main/java/com/deare/backend/api/from/dto/request/FromCreateRequestDTO.java @@ -1,4 +1,4 @@ -package com.deare.backend.api.from.dto; +package com.deare.backend.api.from.dto.request; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.Pattern; diff --git a/src/main/java/com/deare/backend/api/from/dto/FromUpdateRequestDTO.java b/src/main/java/com/deare/backend/api/from/dto/request/FromUpdateRequestDTO.java similarity index 93% rename from src/main/java/com/deare/backend/api/from/dto/FromUpdateRequestDTO.java rename to src/main/java/com/deare/backend/api/from/dto/request/FromUpdateRequestDTO.java index e80ba400..e97b1f95 100644 --- a/src/main/java/com/deare/backend/api/from/dto/FromUpdateRequestDTO.java +++ b/src/main/java/com/deare/backend/api/from/dto/request/FromUpdateRequestDTO.java @@ -1,4 +1,4 @@ -package com.deare.backend.api.from.dto; +package com.deare.backend.api.from.dto.request; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.Pattern; diff --git a/src/main/java/com/deare/backend/api/from/dto/FromCreateResponseDTO.java b/src/main/java/com/deare/backend/api/from/dto/response/FromCreateResponseDTO.java similarity index 56% rename from src/main/java/com/deare/backend/api/from/dto/FromCreateResponseDTO.java rename to src/main/java/com/deare/backend/api/from/dto/response/FromCreateResponseDTO.java index 78cbcefe..b40251d9 100644 --- a/src/main/java/com/deare/backend/api/from/dto/FromCreateResponseDTO.java +++ b/src/main/java/com/deare/backend/api/from/dto/response/FromCreateResponseDTO.java @@ -1,4 +1,4 @@ -package com.deare.backend.api.from.dto; +package com.deare.backend.api.from.dto.response; public record FromCreateResponseDTO( Long fromId diff --git a/src/main/java/com/deare/backend/api/from/dto/FromDeleteResponseDTO.java b/src/main/java/com/deare/backend/api/from/dto/response/FromDeleteResponseDTO.java similarity index 56% rename from src/main/java/com/deare/backend/api/from/dto/FromDeleteResponseDTO.java rename to src/main/java/com/deare/backend/api/from/dto/response/FromDeleteResponseDTO.java index 6db4211e..a9422bcb 100644 --- a/src/main/java/com/deare/backend/api/from/dto/FromDeleteResponseDTO.java +++ b/src/main/java/com/deare/backend/api/from/dto/response/FromDeleteResponseDTO.java @@ -1,4 +1,4 @@ -package com.deare.backend.api.from.dto; +package com.deare.backend.api.from.dto.response; public record FromDeleteResponseDTO( Long fromId diff --git a/src/main/java/com/deare/backend/api/from/dto/FromListResponseDTO.java b/src/main/java/com/deare/backend/api/from/dto/response/FromListResponseDTO.java similarity index 67% rename from src/main/java/com/deare/backend/api/from/dto/FromListResponseDTO.java rename to src/main/java/com/deare/backend/api/from/dto/response/FromListResponseDTO.java index b824d4f2..8bcf0113 100644 --- a/src/main/java/com/deare/backend/api/from/dto/FromListResponseDTO.java +++ b/src/main/java/com/deare/backend/api/from/dto/response/FromListResponseDTO.java @@ -1,4 +1,4 @@ -package com.deare.backend.api.from.dto; +package com.deare.backend.api.from.dto.response; import java.util.List; diff --git a/src/main/java/com/deare/backend/api/from/dto/FromResponseDTO.java b/src/main/java/com/deare/backend/api/from/dto/response/FromResponseDTO.java similarity index 75% rename from src/main/java/com/deare/backend/api/from/dto/FromResponseDTO.java rename to src/main/java/com/deare/backend/api/from/dto/response/FromResponseDTO.java index 6d6e8196..bf59d723 100644 --- a/src/main/java/com/deare/backend/api/from/dto/FromResponseDTO.java +++ b/src/main/java/com/deare/backend/api/from/dto/response/FromResponseDTO.java @@ -1,4 +1,4 @@ -package com.deare.backend.api.from.dto; +package com.deare.backend.api.from.dto.response; public record FromResponseDTO( Long fromId, diff --git a/src/main/java/com/deare/backend/api/from/dto/FromUpdateResponseDTO.java b/src/main/java/com/deare/backend/api/from/dto/response/FromUpdateResponseDTO.java similarity index 80% rename from src/main/java/com/deare/backend/api/from/dto/FromUpdateResponseDTO.java rename to src/main/java/com/deare/backend/api/from/dto/response/FromUpdateResponseDTO.java index b7f47e62..541fb5db 100644 --- a/src/main/java/com/deare/backend/api/from/dto/FromUpdateResponseDTO.java +++ b/src/main/java/com/deare/backend/api/from/dto/response/FromUpdateResponseDTO.java @@ -1,4 +1,4 @@ -package com.deare.backend.api.from.dto; +package com.deare.backend.api.from.dto.response; import java.time.LocalDateTime; diff --git a/src/main/java/com/deare/backend/api/from/service/FromService.java b/src/main/java/com/deare/backend/api/from/service/FromService.java index 9ed6ad83..08277f0c 100644 --- a/src/main/java/com/deare/backend/api/from/service/FromService.java +++ b/src/main/java/com/deare/backend/api/from/service/FromService.java @@ -1,6 +1,11 @@ package com.deare.backend.api.from.service; -import com.deare.backend.api.from.dto.*; +import com.deare.backend.api.from.dto.request.FromCreateRequestDTO; +import com.deare.backend.api.from.dto.request.FromUpdateRequestDTO; +import com.deare.backend.api.from.dto.response.FromCreateResponseDTO; +import com.deare.backend.api.from.dto.response.FromDeleteResponseDTO; +import com.deare.backend.api.from.dto.response.FromListResponseDTO; +import com.deare.backend.api.from.dto.response.FromUpdateResponseDTO; import com.deare.backend.domain.from.entity.From; import com.deare.backend.domain.from.exception.FromErrorCode; import com.deare.backend.domain.from.repository.FromRepository; diff --git a/src/main/java/com/deare/backend/api/home/controller/HomeController.java b/src/main/java/com/deare/backend/api/home/controller/HomeController.java index c870602f..3187c98c 100644 --- a/src/main/java/com/deare/backend/api/home/controller/HomeController.java +++ b/src/main/java/com/deare/backend/api/home/controller/HomeController.java @@ -1,7 +1,7 @@ package com.deare.backend.api.home.controller; import com.deare.backend.api.home.service.HomeService; -import com.deare.backend.api.home.dto.HomeDashboardResponse; +import com.deare.backend.api.home.dto.response.HomeDashboardResponse; import com.deare.backend.global.auth.util.SecurityUtil; import com.deare.backend.global.common.response.ApiResponse; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/deare/backend/api/home/dto/HomeDashboardResponse.java b/src/main/java/com/deare/backend/api/home/dto/response/HomeDashboardResponse.java similarity index 52% rename from src/main/java/com/deare/backend/api/home/dto/HomeDashboardResponse.java rename to src/main/java/com/deare/backend/api/home/dto/response/HomeDashboardResponse.java index 1b840975..b9b882ac 100644 --- a/src/main/java/com/deare/backend/api/home/dto/HomeDashboardResponse.java +++ b/src/main/java/com/deare/backend/api/home/dto/response/HomeDashboardResponse.java @@ -1,5 +1,8 @@ -package com.deare.backend.api.home.dto; +package com.deare.backend.api.home.dto.response; +import com.deare.backend.api.home.dto.result.HomeSettingDto; +import com.deare.backend.api.home.dto.result.HomeStickerDto; +import com.deare.backend.api.home.dto.result.HomeUserDto; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/src/main/java/com/deare/backend/api/home/dto/result/HomeDashboardDTO.java b/src/main/java/com/deare/backend/api/home/dto/result/HomeDashboardDTO.java new file mode 100644 index 00000000..114ce3bc --- /dev/null +++ b/src/main/java/com/deare/backend/api/home/dto/result/HomeDashboardDTO.java @@ -0,0 +1,9 @@ +package com.deare.backend.api.home.service.dto; + +import java.util.List; + +public record HomeDashboardResult( + HomeUserResult user, + HomeSettingResult setting, + List stickers +) {} diff --git a/src/main/java/com/deare/backend/api/home/dto/HomeSettingDto.java b/src/main/java/com/deare/backend/api/home/dto/result/HomeSettingDto.java similarity index 75% rename from src/main/java/com/deare/backend/api/home/dto/HomeSettingDto.java rename to src/main/java/com/deare/backend/api/home/dto/result/HomeSettingDto.java index cdb39dc6..b0e5b228 100644 --- a/src/main/java/com/deare/backend/api/home/dto/HomeSettingDto.java +++ b/src/main/java/com/deare/backend/api/home/dto/result/HomeSettingDto.java @@ -1,4 +1,4 @@ -package com.deare.backend.api.home.dto; +package com.deare.backend.api.home.dto.result; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/src/main/java/com/deare/backend/api/home/dto/HomeStickerDto.java b/src/main/java/com/deare/backend/api/home/dto/result/HomeStickerDto.java similarity index 88% rename from src/main/java/com/deare/backend/api/home/dto/HomeStickerDto.java rename to src/main/java/com/deare/backend/api/home/dto/result/HomeStickerDto.java index ea832d62..9a947fe3 100644 --- a/src/main/java/com/deare/backend/api/home/dto/HomeStickerDto.java +++ b/src/main/java/com/deare/backend/api/home/dto/result/HomeStickerDto.java @@ -1,4 +1,4 @@ -package com.deare.backend.api.home.dto; +package com.deare.backend.api.home.dto.result; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/src/main/java/com/deare/backend/api/home/dto/HomeUserDto.java b/src/main/java/com/deare/backend/api/home/dto/result/HomeUserDto.java similarity index 82% rename from src/main/java/com/deare/backend/api/home/dto/HomeUserDto.java rename to src/main/java/com/deare/backend/api/home/dto/result/HomeUserDto.java index df0ef469..e8cd73b1 100644 --- a/src/main/java/com/deare/backend/api/home/dto/HomeUserDto.java +++ b/src/main/java/com/deare/backend/api/home/dto/result/HomeUserDto.java @@ -1,4 +1,4 @@ -package com.deare.backend.api.home.dto; +package com.deare.backend.api.home.dto.result; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/src/main/java/com/deare/backend/api/home/service/HomeService.java b/src/main/java/com/deare/backend/api/home/service/HomeService.java index e9b5e794..55d03760 100644 --- a/src/main/java/com/deare/backend/api/home/service/HomeService.java +++ b/src/main/java/com/deare/backend/api/home/service/HomeService.java @@ -1,9 +1,9 @@ package com.deare.backend.api.home.service; -import com.deare.backend.api.home.dto.HomeDashboardResponse; -import com.deare.backend.api.home.dto.HomeSettingDto; -import com.deare.backend.api.home.dto.HomeStickerDto; -import com.deare.backend.api.home.dto.HomeUserDto; +import com.deare.backend.api.home.dto.response.HomeDashboardResponse; +import com.deare.backend.api.home.dto.result.HomeSettingDto; +import com.deare.backend.api.home.dto.result.HomeStickerDto; +import com.deare.backend.api.home.dto.result.HomeUserDto; import com.deare.backend.api.home.exception.HomeErrorCode; import com.deare.backend.domain.setting.entity.UserSetting; import com.deare.backend.domain.setting.repository.UserSettingRepository; diff --git a/src/main/java/com/deare/backend/api/image/controller/ImageController.java b/src/main/java/com/deare/backend/api/image/controller/ImageController.java index 6daf5934..66187086 100644 --- a/src/main/java/com/deare/backend/api/image/controller/ImageController.java +++ b/src/main/java/com/deare/backend/api/image/controller/ImageController.java @@ -1,6 +1,6 @@ package com.deare.backend.api.image.controller; -import com.deare.backend.api.image.dto.ImageUploadResponseDTO; +import com.deare.backend.api.image.dto.response.ImageUploadResponseDTO; import com.deare.backend.api.image.service.ImageUploadService; import com.deare.backend.global.common.response.ApiResponse; import io.swagger.v3.oas.annotations.Operation; diff --git a/src/main/java/com/deare/backend/api/image/dto/ImageUploadResponseDTO.java b/src/main/java/com/deare/backend/api/image/dto/response/ImageUploadResponseDTO.java similarity index 67% rename from src/main/java/com/deare/backend/api/image/dto/ImageUploadResponseDTO.java rename to src/main/java/com/deare/backend/api/image/dto/response/ImageUploadResponseDTO.java index 59980e71..d79f48c4 100644 --- a/src/main/java/com/deare/backend/api/image/dto/ImageUploadResponseDTO.java +++ b/src/main/java/com/deare/backend/api/image/dto/response/ImageUploadResponseDTO.java @@ -1,4 +1,4 @@ -package com.deare.backend.api.image.dto; +package com.deare.backend.api.image.dto.response; public record ImageUploadResponseDTO( Long imageId, diff --git a/src/main/java/com/deare/backend/api/image/service/ImageUploadService.java b/src/main/java/com/deare/backend/api/image/service/ImageUploadService.java index ae455742..57b99009 100644 --- a/src/main/java/com/deare/backend/api/image/service/ImageUploadService.java +++ b/src/main/java/com/deare/backend/api/image/service/ImageUploadService.java @@ -1,6 +1,6 @@ package com.deare.backend.api.image.service; -import com.deare.backend.api.image.dto.ImageUploadResponseDTO; +import com.deare.backend.api.image.dto.response.ImageUploadResponseDTO; import com.deare.backend.domain.image.entity.enums.ContentType; import com.deare.backend.domain.image.entity.enums.FileType; import com.deare.backend.domain.image.entity.Image; diff --git a/src/main/java/com/deare/backend/api/sticker/controller/StickerController.java b/src/main/java/com/deare/backend/api/sticker/controller/StickerController.java index 902739ee..979bb2c9 100644 --- a/src/main/java/com/deare/backend/api/sticker/controller/StickerController.java +++ b/src/main/java/com/deare/backend/api/sticker/controller/StickerController.java @@ -1,6 +1,10 @@ package com.deare.backend.api.sticker.controller; -import com.deare.backend.api.sticker.dto.*; +import com.deare.backend.api.sticker.dto.request.StickerCreateRequestDTO; +import com.deare.backend.api.sticker.dto.request.StickerUpdateRequestDTO; +import com.deare.backend.api.sticker.dto.response.StickerCreateResponseDTO; +import com.deare.backend.api.sticker.dto.response.StickerDeleteResponseDTO; +import com.deare.backend.api.sticker.dto.response.StickerUpdateResponseDTO; import com.deare.backend.api.sticker.service.StickerService; import com.deare.backend.global.auth.util.SecurityUtil; import com.deare.backend.global.common.response.ApiResponse; @@ -46,7 +50,7 @@ public ApiResponse updateSticker( summary = "스티커 삭제", description = "홈 화면에 배치된 스티커를 삭제하는 API입니다." ) - public ApiResponse deleteSticker( + public ApiResponse deleteSticker( @PathVariable Long stickerId ) { Long userId = SecurityUtil.getCurrentUserId(); diff --git a/src/main/java/com/deare/backend/api/sticker/dto/StickerDeleteDTO.java b/src/main/java/com/deare/backend/api/sticker/dto/StickerDeleteDTO.java deleted file mode 100644 index a919ab43..00000000 --- a/src/main/java/com/deare/backend/api/sticker/dto/StickerDeleteDTO.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.deare.backend.api.sticker.dto; - -public record StickerDeleteDTO( - Long stickerId -) {} diff --git a/src/main/java/com/deare/backend/api/sticker/dto/StickerCreateRequestDTO.java b/src/main/java/com/deare/backend/api/sticker/dto/request/StickerCreateRequestDTO.java similarity index 81% rename from src/main/java/com/deare/backend/api/sticker/dto/StickerCreateRequestDTO.java rename to src/main/java/com/deare/backend/api/sticker/dto/request/StickerCreateRequestDTO.java index a50d54e9..faa598c4 100644 --- a/src/main/java/com/deare/backend/api/sticker/dto/StickerCreateRequestDTO.java +++ b/src/main/java/com/deare/backend/api/sticker/dto/request/StickerCreateRequestDTO.java @@ -1,4 +1,4 @@ -package com.deare.backend.api.sticker.dto; +package com.deare.backend.api.sticker.dto.request; import java.math.BigDecimal; diff --git a/src/main/java/com/deare/backend/api/sticker/dto/StickerUpdateRequestDTO.java b/src/main/java/com/deare/backend/api/sticker/dto/request/StickerUpdateRequestDTO.java similarity index 79% rename from src/main/java/com/deare/backend/api/sticker/dto/StickerUpdateRequestDTO.java rename to src/main/java/com/deare/backend/api/sticker/dto/request/StickerUpdateRequestDTO.java index b80f2e3f..a1a4ce56 100644 --- a/src/main/java/com/deare/backend/api/sticker/dto/StickerUpdateRequestDTO.java +++ b/src/main/java/com/deare/backend/api/sticker/dto/request/StickerUpdateRequestDTO.java @@ -1,4 +1,4 @@ -package com.deare.backend.api.sticker.dto; +package com.deare.backend.api.sticker.dto.request; import java.math.BigDecimal; diff --git a/src/main/java/com/deare/backend/api/sticker/dto/StickerCreateResponseDTO.java b/src/main/java/com/deare/backend/api/sticker/dto/response/StickerCreateResponseDTO.java similarity index 57% rename from src/main/java/com/deare/backend/api/sticker/dto/StickerCreateResponseDTO.java rename to src/main/java/com/deare/backend/api/sticker/dto/response/StickerCreateResponseDTO.java index 29166c5b..d795272a 100644 --- a/src/main/java/com/deare/backend/api/sticker/dto/StickerCreateResponseDTO.java +++ b/src/main/java/com/deare/backend/api/sticker/dto/response/StickerCreateResponseDTO.java @@ -1,4 +1,4 @@ -package com.deare.backend.api.sticker.dto; +package com.deare.backend.api.sticker.dto.response; public record StickerCreateResponseDTO( Long stickerId diff --git a/src/main/java/com/deare/backend/api/sticker/dto/response/StickerDeleteResponseDTO.java b/src/main/java/com/deare/backend/api/sticker/dto/response/StickerDeleteResponseDTO.java new file mode 100644 index 00000000..4c257fdb --- /dev/null +++ b/src/main/java/com/deare/backend/api/sticker/dto/response/StickerDeleteResponseDTO.java @@ -0,0 +1,5 @@ +package com.deare.backend.api.sticker.dto.response; + +public record StickerDeleteResponseDTO( + Long stickerId +) {} diff --git a/src/main/java/com/deare/backend/api/sticker/dto/StickerUpdateResponseDTO.java b/src/main/java/com/deare/backend/api/sticker/dto/response/StickerUpdateResponseDTO.java similarity index 57% rename from src/main/java/com/deare/backend/api/sticker/dto/StickerUpdateResponseDTO.java rename to src/main/java/com/deare/backend/api/sticker/dto/response/StickerUpdateResponseDTO.java index 8b39fff9..758a33cf 100644 --- a/src/main/java/com/deare/backend/api/sticker/dto/StickerUpdateResponseDTO.java +++ b/src/main/java/com/deare/backend/api/sticker/dto/response/StickerUpdateResponseDTO.java @@ -1,4 +1,4 @@ -package com.deare.backend.api.sticker.dto; +package com.deare.backend.api.sticker.dto.response; public record StickerUpdateResponseDTO( Long stickerId diff --git a/src/main/java/com/deare/backend/api/sticker/service/StickerService.java b/src/main/java/com/deare/backend/api/sticker/service/StickerService.java index 03978375..0077f6c5 100644 --- a/src/main/java/com/deare/backend/api/sticker/service/StickerService.java +++ b/src/main/java/com/deare/backend/api/sticker/service/StickerService.java @@ -1,9 +1,13 @@ package com.deare.backend.api.sticker.service; -import com.deare.backend.api.sticker.dto.*; +import com.deare.backend.api.sticker.dto.request.StickerCreateRequestDTO; +import com.deare.backend.api.sticker.dto.request.StickerUpdateRequestDTO; +import com.deare.backend.api.sticker.dto.response.StickerCreateResponseDTO; +import com.deare.backend.api.sticker.dto.response.StickerDeleteResponseDTO; +import com.deare.backend.api.sticker.dto.response.StickerUpdateResponseDTO; public interface StickerService { StickerCreateResponseDTO create(Long userId, StickerCreateRequestDTO request); StickerUpdateResponseDTO update(Long userId, Long stickerId, StickerUpdateRequestDTO request); - StickerDeleteDTO delete(Long userId, Long stickerId); + StickerDeleteResponseDTO delete(Long userId, Long stickerId); } diff --git a/src/main/java/com/deare/backend/api/sticker/service/StickerServiceImpl.java b/src/main/java/com/deare/backend/api/sticker/service/StickerServiceImpl.java index 444b2550..a99ff170 100644 --- a/src/main/java/com/deare/backend/api/sticker/service/StickerServiceImpl.java +++ b/src/main/java/com/deare/backend/api/sticker/service/StickerServiceImpl.java @@ -1,6 +1,10 @@ package com.deare.backend.api.sticker.service; -import com.deare.backend.api.sticker.dto.*; +import com.deare.backend.api.sticker.dto.request.StickerCreateRequestDTO; +import com.deare.backend.api.sticker.dto.request.StickerUpdateRequestDTO; +import com.deare.backend.api.sticker.dto.response.StickerCreateResponseDTO; +import com.deare.backend.api.sticker.dto.response.StickerDeleteResponseDTO; +import com.deare.backend.api.sticker.dto.response.StickerUpdateResponseDTO; import com.deare.backend.domain.image.entity.Image; import com.deare.backend.domain.image.exception.ImageErrorCode; import com.deare.backend.domain.image.repository.ImageRepository; @@ -16,8 +20,6 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.List; - @Service @RequiredArgsConstructor @Transactional @@ -71,7 +73,7 @@ public StickerUpdateResponseDTO update(Long userId, Long stickerId, StickerUpdat } @Override - public StickerDeleteDTO delete(Long userId, Long stickerId) { + public StickerDeleteResponseDTO delete(Long userId, Long stickerId) { UserSticker sticker = userStickerRepository.findById(stickerId) .orElseThrow(() -> new GeneralException(StickerErrorCode.NOT_FOUND)); @@ -80,7 +82,7 @@ public StickerDeleteDTO delete(Long userId, Long stickerId) { } userStickerRepository.delete(sticker); - return new StickerDeleteDTO(stickerId); + return new StickerDeleteResponseDTO(stickerId); } } diff --git a/src/main/java/com/deare/backend/domain/from/repository/query/FromQueryRepository.java b/src/main/java/com/deare/backend/domain/from/repository/query/FromQueryRepository.java index c25e4e95..42c1d7f3 100644 --- a/src/main/java/com/deare/backend/domain/from/repository/query/FromQueryRepository.java +++ b/src/main/java/com/deare/backend/domain/from/repository/query/FromQueryRepository.java @@ -1,6 +1,6 @@ package com.deare.backend.domain.from.repository.query; -import com.deare.backend.api.from.dto.FromResponseDTO; +import com.deare.backend.api.from.dto.response.FromResponseDTO; import jakarta.persistence.EntityManager; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Repository; From 3e09a13bbcf054d450a9ce864182025a6d70de20 Mon Sep 17 00:00:00 2001 From: Minsu Kwon Date: Thu, 12 Feb 2026 01:23:33 +0900 Subject: [PATCH 08/10] =?UTF-8?q?fix=20=EC=98=A4=EB=A5=98=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../backend/api/home/dto/result/HomeDashboardDTO.java | 9 --------- 1 file changed, 9 deletions(-) delete mode 100644 src/main/java/com/deare/backend/api/home/dto/result/HomeDashboardDTO.java diff --git a/src/main/java/com/deare/backend/api/home/dto/result/HomeDashboardDTO.java b/src/main/java/com/deare/backend/api/home/dto/result/HomeDashboardDTO.java deleted file mode 100644 index 114ce3bc..00000000 --- a/src/main/java/com/deare/backend/api/home/dto/result/HomeDashboardDTO.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.deare.backend.api.home.service.dto; - -import java.util.List; - -public record HomeDashboardResult( - HomeUserResult user, - HomeSettingResult setting, - List stickers -) {} From 614357bca274d0397c7a82b36fdd63b4e573ead6 Mon Sep 17 00:00:00 2001 From: Minsu Kwon Date: Thu, 12 Feb 2026 01:33:47 +0900 Subject: [PATCH 09/10] =?UTF-8?q?controller=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/home/controller/HomeController.java | 15 ++++++++++----- .../api/setting/controller/SettingController.java | 8 +++++++- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/deare/backend/api/home/controller/HomeController.java b/src/main/java/com/deare/backend/api/home/controller/HomeController.java index 3187c98c..7ebf974e 100644 --- a/src/main/java/com/deare/backend/api/home/controller/HomeController.java +++ b/src/main/java/com/deare/backend/api/home/controller/HomeController.java @@ -1,9 +1,10 @@ package com.deare.backend.api.home.controller; -import com.deare.backend.api.home.service.HomeService; import com.deare.backend.api.home.dto.response.HomeDashboardResponse; +import com.deare.backend.api.home.service.HomeService; import com.deare.backend.global.auth.util.SecurityUtil; import com.deare.backend.global.common.response.ApiResponse; +import io.swagger.v3.oas.annotations.Operation; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -13,13 +14,17 @@ @RequiredArgsConstructor @RequestMapping("/home") public class HomeController { + private final HomeService homeService; @GetMapping - public ApiResponsegetHome(){ + @Operation( + summary = "홈 대시보드 조회", + description = "사용자의 홈 대시보드(유저 정보, 배경색, 스티커 목록)를 조회하는 API입니다." + ) + public ApiResponse getHome() { Long userId = SecurityUtil.getCurrentUserId(); - HomeDashboardResponse data = homeService.getHome(userId); - return ApiResponse.success(data); + HomeDashboardResponse res = homeService.getHome(userId); + return ApiResponse.success(res); } - } diff --git a/src/main/java/com/deare/backend/api/setting/controller/SettingController.java b/src/main/java/com/deare/backend/api/setting/controller/SettingController.java index 32435c4e..4c248171 100644 --- a/src/main/java/com/deare/backend/api/setting/controller/SettingController.java +++ b/src/main/java/com/deare/backend/api/setting/controller/SettingController.java @@ -48,10 +48,16 @@ public ApiResponse upgradeMembership() { return ApiResponse.success(settingService.upgradeMembership(userId)); } @PatchMapping("/homecolor") + @Operation( + summary = "홈 배경색 변경", + description = "사용자의 홈 화면 배경색을 변경하는 API입니다." + ) public ApiResponse updateHomeColor( @Valid @RequestBody UpdateHomeColorRequestDTO request ) { Long userId = SecurityUtil.getCurrentUserId(); - return ApiResponse.success(settingService.updateHomeColor(userId, request)); + UpdateHomeColorResponseDTO res = settingService.updateHomeColor(userId, request); + return ApiResponse.success(res); } + } From cf8f7eee03a86d12011e83ed9863876091bd35f2 Mon Sep 17 00:00:00 2001 From: catomat0 Date: Thu, 12 Feb 2026 17:33:54 +0900 Subject: [PATCH 10/10] =?UTF-8?q?Fix:=20=EC=BF=BC=EB=A6=AC=EB=AC=B8=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/from/repository/query/FromQueryRepository.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/deare/backend/domain/from/repository/query/FromQueryRepository.java b/src/main/java/com/deare/backend/domain/from/repository/query/FromQueryRepository.java index 42c1d7f3..aed588b9 100644 --- a/src/main/java/com/deare/backend/domain/from/repository/query/FromQueryRepository.java +++ b/src/main/java/com/deare/backend/domain/from/repository/query/FromQueryRepository.java @@ -15,7 +15,7 @@ public class FromQueryRepository { public List findFromsWithLetterCount(Long userId) { return em.createQuery(""" - select new com.deare.backend.api.from.dto.FromResponseDTO( + select new com.deare.backend.api.from.dto.response.FromResponseDTO( f.id, f.name, f.backgroundColor,