diff --git a/src/main/java/com/ongil/backend/domain/home/controller/HomeController.java b/src/main/java/com/ongil/backend/domain/home/controller/HomeController.java deleted file mode 100644 index d390c53..0000000 --- a/src/main/java/com/ongil/backend/domain/home/controller/HomeController.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.ongil.backend.domain.home.controller; - -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 com.ongil.backend.domain.home.dto.response.HomeResDto; -import com.ongil.backend.domain.home.service.HomeService; -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; - -@Tag(name = "Home", description = "홈 화면 관련 API (토큰 선택 - 로그인 시 개인화 데이터 제공)") -@RestController -@RequiredArgsConstructor -@RequestMapping("/api/home") -public class HomeController { - - private final HomeService homeService; - - @GetMapping - @Operation( - summary = "홈 화면 데이터 조회 API", - description = """ - 홈 화면 구성에 필요한 모든 데이터를 한 번에 조회합니다. - - 할인 광고 배너 (5개) - - 추천 상품 목록 (로그인: 개인화 추천 / 비로그인: 인기 상품) - - 추천 브랜드 (랜덤 3개 브랜드 + 각 6개 상품) - - 장바구니 개수 (로그인 시에만, 비로그인 시 null) - """ - ) - public DataResponse getHomeData( - @AuthenticationPrincipal Long userId - ) { - HomeResDto res = homeService.getHomeData(userId); - return DataResponse.from(res); - } -} diff --git a/src/main/java/com/ongil/backend/domain/home/converter/HomeConverter.java b/src/main/java/com/ongil/backend/domain/home/converter/HomeConverter.java deleted file mode 100644 index 0369c73..0000000 --- a/src/main/java/com/ongil/backend/domain/home/converter/HomeConverter.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.ongil.backend.domain.home.converter; - -import java.util.List; - -import com.ongil.backend.domain.advertisement.dto.AdvertisementResponse; -import com.ongil.backend.domain.brand.dto.response.BrandRecommendResponse; -import com.ongil.backend.domain.home.dto.response.HomeResDto; -import com.ongil.backend.domain.product.dto.response.RecommendedProductResponse; - -import lombok.experimental.UtilityClass; - -@UtilityClass -public class HomeConverter { - - public static HomeResDto toHomeResDto( - List advertisements, - List recommendedProducts, - List recommendBrands, - Long cartCount - ) { - return HomeResDto.builder() - .advertisements(advertisements) - .recommendedProducts(recommendedProducts) - .recommendBrands(recommendBrands) - .cartCount(cartCount) - .build(); - } -} diff --git a/src/main/java/com/ongil/backend/domain/home/dto/response/HomeResDto.java b/src/main/java/com/ongil/backend/domain/home/dto/response/HomeResDto.java deleted file mode 100644 index 3acebdf..0000000 --- a/src/main/java/com/ongil/backend/domain/home/dto/response/HomeResDto.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.ongil.backend.domain.home.dto.response; - -import java.util.List; - -import com.ongil.backend.domain.advertisement.dto.AdvertisementResponse; -import com.ongil.backend.domain.brand.dto.response.BrandRecommendResponse; -import com.ongil.backend.domain.product.dto.response.RecommendedProductResponse; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Builder; - -@Builder -@Schema(description = "홈 화면 통합 응답") -public record HomeResDto( - - @Schema(description = "할인 광고 배너 목록 (5개)") - List advertisements, - - @Schema(description = "추천 상품 목록") - List recommendedProducts, - - @Schema(description = "추천 브랜드 목록 (3개 브랜드 + 각 6개 상품)") - List recommendBrands, - - @Schema(description = "장바구니 담긴 개수 (비로그인 시 null)") - Long cartCount -) {} diff --git a/src/main/java/com/ongil/backend/domain/home/service/HomeService.java b/src/main/java/com/ongil/backend/domain/home/service/HomeService.java deleted file mode 100644 index 1f669bd..0000000 --- a/src/main/java/com/ongil/backend/domain/home/service/HomeService.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.ongil.backend.domain.home.service; - -import java.util.List; - -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import com.ongil.backend.domain.advertisement.dto.AdvertisementResponse; -import com.ongil.backend.domain.advertisement.service.AdvertisementService; -import com.ongil.backend.domain.brand.dto.response.BrandRecommendResponse; -import com.ongil.backend.domain.brand.service.BrandService; -import com.ongil.backend.domain.cart.service.CartService; -import com.ongil.backend.domain.home.converter.HomeConverter; -import com.ongil.backend.domain.home.dto.response.HomeResDto; -import com.ongil.backend.domain.product.dto.response.RecommendedProductResponse; -import com.ongil.backend.domain.product.service.ProductService; - -import lombok.RequiredArgsConstructor; - -@Service -@RequiredArgsConstructor -@Transactional(readOnly = true) -public class HomeService { - - private static final int RECOMMENDED_PRODUCTS_SIZE = 10; - - private final AdvertisementService advertisementService; - private final ProductService productService; - private final BrandService brandService; - private final CartService cartService; - - public HomeResDto getHomeData(Long userId) { - List advertisements = advertisementService.getHomeAdvertisements(); - List recommendedProducts = productService.getRecommendedProducts(userId, RECOMMENDED_PRODUCTS_SIZE); - List recommendBrands = brandService.getRecommendBrands(); - Long cartCount = (userId != null) ? cartService.getCartCount(userId) : null; - - return HomeConverter.toHomeResDto(advertisements, recommendedProducts, recommendBrands, cartCount); - } -} diff --git a/src/main/java/com/ongil/backend/global/config/SecurityConfig.java b/src/main/java/com/ongil/backend/global/config/SecurityConfig.java index 0823292..5c6e59b 100644 --- a/src/main/java/com/ongil/backend/global/config/SecurityConfig.java +++ b/src/main/java/com/ongil/backend/global/config/SecurityConfig.java @@ -52,8 +52,7 @@ public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { .requestMatchers("/api/auth/oauth/**").permitAll() .requestMatchers("/api/auth/token/refresh").permitAll() - // [4] 홈 & 광고 - .requestMatchers("/api/home").permitAll() + // [4] 광고 .requestMatchers("/api/advertisements/**").permitAll() // [5] 상품 관련