Skip to content

Commit f3d9fc8

Browse files
authored
[Feat] 상품 상세 GET 요청 응답 DTO 수정 (#342)
* work * work * work * Work * work * work
1 parent 689c838 commit f3d9fc8

File tree

4 files changed

+28
-13
lines changed

4 files changed

+28
-13
lines changed

src/main/java/com/back/domain/funding/repository/FundingCustomRepositoryImpl.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,8 @@ public List<Funding> searchByTitle(String keyword) {
169169
com.back.domain.funding.entity.FundingStatus.OPEN,
170170
com.back.domain.funding.entity.FundingStatus.APPROVED,
171171
com.back.domain.funding.entity.FundingStatus.SUCCESS,
172-
com.back.domain.funding.entity.FundingStatus.CLOSED
172+
com.back.domain.funding.entity.FundingStatus.CLOSED,
173+
com.back.domain.funding.entity.FundingStatus.FAILED
173174
));
174175

175176
query.where(predicates.toArray(new Predicate[0]));

src/main/java/com/back/domain/product/product/dto/request/CreateProductRequest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import jakarta.validation.Valid;
66
import jakarta.validation.constraints.*;
77

8-
import java.time.LocalDate;
8+
import java.time.LocalDateTime;
99
import java.util.List;
1010

1111
@Schema(name = "CreateProductRequest", description = "상품 등록 요청 DTO")
@@ -82,10 +82,10 @@ public record CreateProductRequest(
8282
Boolean isRestock,// 재입고 여부
8383

8484
@Schema(description = "판매 시작일 (null 가능)", example = "2025-10-01")
85-
LocalDate sellingStartDate, // 판매 시작일
85+
LocalDateTime sellingStartDate, // 판매 시작일
8686

8787
@Schema(description = "판매 종료일 (null 가능)", example = "2025-12-01")
88-
LocalDate sellingEndDate, // 판매 종료일
88+
LocalDateTime sellingEndDate, // 판매 종료일
8989

9090
@Schema(description = "태그 ID 목록", example = "[1,2,3]")
9191
@NotEmpty(message = "스타일 태그는 최소 1개 이상이어야 합니다.")

src/main/java/com/back/domain/product/product/dto/response/ProductDetailResponse.java

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@
44
import com.back.domain.product.product.entity.Option;
55
import com.back.domain.product.product.entity.ProductImage;
66
import com.back.domain.product.tag.dto.response.TagResponse;
7+
import com.back.global.s3.FileType;
78
import io.swagger.v3.oas.annotations.media.Schema;
89

10+
import java.time.LocalDateTime;
911
import java.util.List;
1012
import java.util.UUID;
1113

@@ -62,7 +64,7 @@ public record ProductDetailResponse(
6264
@Schema(description = "추가 상품 목록(null 가능)")
6365
List<AdditionalProductResponse> additionalProducts,
6466

65-
@Schema( description = "이미지 파일 목록", example = "[" + "{\"fileUrl\":\"https://example.com/image1.jpg\",\"fileType\":\"MAIN\"}," + "{\"fileUrl\":\"https://example.com/image2.jpg\",\"fileType\":\"ADDITIONAL\"}" + "]" )
67+
@Schema( description = "이미지 파일 목록", example = "[" + "{\"url\":\"https://example.com/image1.jpg\",\"type\":\"MAIN\",\"s3Key\":\"product-images/uuid1.png\",\"originalFileName\":\"example.png\"}," + "{\"url\":\"https://example.com/image2.jpg\",\"fileType\":\"ADDITIONAL\",\"s3Key\":\"product-images/uuid2.png\",\"originalFileName\":\"example2.png\"}," + "]" )
6668
List<ProductImageResponse> images,
6769

6870
@Schema(description = "상품 필수 정보")
@@ -93,8 +95,13 @@ public record ProductDetailResponse(
9395
boolean isRestock,
9496

9597
@Schema(description = "태그 ID 목록", example = "[1,2,3]")
96-
List<TagResponse> tags
98+
List<TagResponse> tags,
9799

100+
@Schema(description = "판매 시작일", example = "2025-10-01")
101+
LocalDateTime sellingStartDate,
102+
103+
@Schema(description = "판매 종료일", example = "2025-12-01")
104+
LocalDateTime sellingEndDate
98105
) {
99106
@Schema(name = "OptionResponse", description = "상품 옵션")
100107
public record OptionResponse(
@@ -135,14 +142,20 @@ public static AdditionalProductResponse fromEntity(AdditionalProduct additional)
135142
@Schema(name = "ProductImageResponse", description = "상품 이미지")
136143
public record ProductImageResponse(
137144
@Schema(description = "이미지 URL", example = "https://s3.amazonaws.com/bucket/uuid-main.jpg")
138-
String fileUrl,
145+
String url,
139146
@Schema(description = "이미지 타입", example = "MAIN")
140-
String fileType
147+
FileType type,
148+
@Schema(description = "이미지 s3Key", example = "product-images/uuid1.png")
149+
String s3Key,
150+
@Schema(description = "이미지 원본파일명", example = "example.png")
151+
String originalFileName
141152
) {
142153
public static ProductImageResponse fromEntity(ProductImage img) {
143154
return new ProductImageResponse(
144155
img.getFileUrl(),
145-
img.getFileType().name()
156+
img.getFileType(),
157+
img.getS3Key(),
158+
img.getOriginalFilename()
146159
);
147160
}
148161
}

src/main/java/com/back/domain/product/product/service/ProductService.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -415,8 +415,8 @@ private Product buildProductFromRequest(CreateProductRequest request, User user,
415415
.maxQuantity(request.maxQuantity()) // 최대 구매수량
416416
.isPlanned(request.isPlanned()) // 기획상품 여부
417417
.isRestock(request.isRestock()) // 재입고상품 여부
418-
.sellingStartDate(request.sellingStartDate() != null ? request.sellingStartDate().atStartOfDay() : null)// 판매시작일
419-
.sellingEndDate(request.sellingEndDate() != null ? request.sellingEndDate().atStartOfDay() : null)// 판매종료일
418+
.sellingStartDate(request.sellingStartDate() != null ? request.sellingStartDate() : null)// 판매시작일
419+
.sellingEndDate(request.sellingEndDate() != null ? request.sellingEndDate() : null)// 판매종료일
420420
.productModelName(request.productModelName()) //품명
421421
.certification(request.certification()) // 법에 의한 인증,허가 확인사항
422422
.origin(request.origin()) // 제조국
@@ -462,7 +462,6 @@ private void updateProductFromRequest(Product product, UpdateProductRequest requ
462462
if (previousStock == 0 && product.getStock() > 0) {
463463
product.setRestock(true);
464464
}
465-
466465
}
467466

468467
/** 엔티티 -> DTO */
@@ -511,7 +510,9 @@ private ProductDetailResponse toProductDetailResponse(Product product, ArtistBus
511510
product.getDisplayStatus().name(),
512511
product.isPlanned(),
513512
product.isRestock(),
514-
mapTags(product.getProductTags())
513+
mapTags(product.getProductTags()),
514+
product.getSellingStartDate(),
515+
product.getSellingEndDate()
515516
);
516517
}
517518

0 commit comments

Comments
 (0)