From 987177b00ee2693e143486ca29be01609d013e84 Mon Sep 17 00:00:00 2001 From: JO HYUNGJOON Date: Thu, 12 Feb 2026 11:02:40 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=EA=B4=91=EA=B3=A0=20API=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EC=8A=A4=ED=83=80=EC=9D=BC=20=ED=94=84=EB=A1=9C?= =?UTF-8?q?=EC=A0=9D=ED=8A=B8=20=EC=BB=A8=EB=B2=A4=EC=85=98=EC=97=90=20?= =?UTF-8?q?=EB=A7=9E=EA=B2=8C=20=ED=86=B5=EC=9D=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/AdvertisementController.java | 28 +++++++-------- .../converter/AdvertisementConverter.java | 21 +++++------ .../dto/AdvertisementResponse.java | 18 +++++++--- .../service/AdvertisementService.java | 35 ++++++++++--------- 4 files changed, 57 insertions(+), 45 deletions(-) diff --git a/src/main/java/com/ongil/backend/domain/advertisement/controller/AdvertisementController.java b/src/main/java/com/ongil/backend/domain/advertisement/controller/AdvertisementController.java index d30d730..eafb7b8 100644 --- a/src/main/java/com/ongil/backend/domain/advertisement/controller/AdvertisementController.java +++ b/src/main/java/com/ongil/backend/domain/advertisement/controller/AdvertisementController.java @@ -1,17 +1,18 @@ package com.ongil.backend.domain.advertisement.controller; +import java.util.List; + +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + import com.ongil.backend.domain.advertisement.dto.AdvertisementResponse; import com.ongil.backend.domain.advertisement.service.AdvertisementService; import com.ongil.backend.global.common.dto.DataResponse; + import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; -import org.springframework.security.core.annotation.AuthenticationPrincipal; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.util.List; @RestController @RequiredArgsConstructor @@ -19,13 +20,12 @@ @Tag(name = "Advertisement", description = "광고/배너 관련 API") public class AdvertisementController { - private final AdvertisementService advertisementService; + private final AdvertisementService advertisementService; - @Operation(summary = "홈 화면 할인 광고 목록 조회", description = "메인 배너에 노출될 5개의 광고 목록을 반환합니다.") - @GetMapping("/home") - public DataResponse> getHomeAdvertisements( - ) { - List result = advertisementService.getHomeAdvertisements(); - return DataResponse.from(result); - } + @Operation(summary = "홈 화면 할인 광고 목록 조회", description = "메인 배너에 노출될 5개의 광고 목록을 반환합니다.") + @GetMapping("/home") + public DataResponse> getHomeAdvertisements() { + List result = advertisementService.getHomeAdvertisements(); + return DataResponse.from(result); + } } \ No newline at end of file diff --git a/src/main/java/com/ongil/backend/domain/advertisement/converter/AdvertisementConverter.java b/src/main/java/com/ongil/backend/domain/advertisement/converter/AdvertisementConverter.java index 88b6c06..b822dab 100644 --- a/src/main/java/com/ongil/backend/domain/advertisement/converter/AdvertisementConverter.java +++ b/src/main/java/com/ongil/backend/domain/advertisement/converter/AdvertisementConverter.java @@ -1,18 +1,19 @@ package com.ongil.backend.domain.advertisement.converter; -import com.ongil.backend.domain.advertisement.dto.AdvertisementResponse; import org.springframework.stereotype.Component; +import com.ongil.backend.domain.advertisement.dto.AdvertisementResponse; + @Component public class AdvertisementConverter { - // 추후 Entity -> DTO 변환 시 사용 - public AdvertisementResponse toResponse(Long id, String title, String description, String imageUrl) { - return AdvertisementResponse.builder() - .id(id) - .title(title) - .description(description) - .imageUrl(imageUrl) - .build(); - } + // 추후 Entity -> DTO 변환 시 사용 + public AdvertisementResponse toResponse(Long id, String title, String description, String imageUrl) { + return AdvertisementResponse.builder() + .id(id) + .title(title) + .description(description) + .imageUrl(imageUrl) + .build(); + } } \ No newline at end of file diff --git a/src/main/java/com/ongil/backend/domain/advertisement/dto/AdvertisementResponse.java b/src/main/java/com/ongil/backend/domain/advertisement/dto/AdvertisementResponse.java index eb87af1..cb0c472 100644 --- a/src/main/java/com/ongil/backend/domain/advertisement/dto/AdvertisementResponse.java +++ b/src/main/java/com/ongil/backend/domain/advertisement/dto/AdvertisementResponse.java @@ -1,12 +1,22 @@ package com.ongil.backend.domain.advertisement.dto; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Builder; @Builder +@Schema(description = "할인 광고 응답") public record AdvertisementResponse( - Long id, - String imageUrl, - String title, - String description + + @Schema(description = "광고 ID") + Long id, + + @Schema(description = "광고 이미지 URL") + String imageUrl, + + @Schema(description = "광고 제목") + String title, + + @Schema(description = "광고 문구") + String description ) { } \ No newline at end of file diff --git a/src/main/java/com/ongil/backend/domain/advertisement/service/AdvertisementService.java b/src/main/java/com/ongil/backend/domain/advertisement/service/AdvertisementService.java index 8d439d7..7b27192 100644 --- a/src/main/java/com/ongil/backend/domain/advertisement/service/AdvertisementService.java +++ b/src/main/java/com/ongil/backend/domain/advertisement/service/AdvertisementService.java @@ -1,30 +1,31 @@ package com.ongil.backend.domain.advertisement.service; -import com.ongil.backend.domain.advertisement.converter.AdvertisementConverter; -import com.ongil.backend.domain.advertisement.dto.AdvertisementResponse; -import lombok.RequiredArgsConstructor; +import java.util.List; + import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.List; -import java.util.stream.IntStream; +import com.ongil.backend.domain.advertisement.converter.AdvertisementConverter; +import com.ongil.backend.domain.advertisement.dto.AdvertisementResponse; + +import lombok.RequiredArgsConstructor; @Service @RequiredArgsConstructor @Transactional(readOnly = true) public class AdvertisementService { - private final AdvertisementConverter advertisementConverter; + private final AdvertisementConverter advertisementConverter; - //메인 홈 화면 할인 광고 목록 조회 (Mock Data) - public List getHomeAdvertisements() { - // 실제 DB 조회 대신 목데이터 5개 생성 - return List.of( - advertisementConverter.toResponse(1L, "온길 새로운 파격 혜택", "홈쇼핑이 막막한 당신에게!", "https://example.com/images/ad1.jpg"), - advertisementConverter.toResponse(2L, "봄맞이 효도 상품 기획전", "부모님께 사랑을 전하세요", "https://example.com/images/ad2.jpg"), - advertisementConverter.toResponse(3L, "주말 한정 특가", "놓치면 후회할 베스트 아이템", "https://example.com/images/ad3.jpg"), - advertisementConverter.toResponse(4L, "신규 회원 웰컴 쿠폰", "가입 즉시 10,000원 할인", "https://example.com/images/ad4.jpg"), - advertisementConverter.toResponse(5L, "이달의 추천 카테고리", "가장 인기 있는 상품 모음", "https://example.com/images/ad5.jpg") - ); - } + // 메인 홈 화면 할인 광고 목록 조회 (Mock Data) + public List getHomeAdvertisements() { + // 실제 DB 조회 대신 목데이터 5개 생성 + return List.of( + advertisementConverter.toResponse(1L, "온길 새로운 파격 혜택", "홈쇼핑이 막막한 당신에게!", "https://example.com/images/ad1.jpg"), + advertisementConverter.toResponse(2L, "봄맞이 효도 상품 기획전", "부모님께 사랑을 전하세요", "https://example.com/images/ad2.jpg"), + advertisementConverter.toResponse(3L, "주말 한정 특가", "놓치면 후회할 베스트 아이템", "https://example.com/images/ad3.jpg"), + advertisementConverter.toResponse(4L, "신규 회원 웰컴 쿠폰", "가입 즉시 10,000원 할인", "https://example.com/images/ad4.jpg"), + advertisementConverter.toResponse(5L, "이달의 추천 카테고리", "가장 인기 있는 상품 모음", "https://example.com/images/ad5.jpg") + ); + } } \ No newline at end of file