From 91ceb465bc08f1fb8bd3842222188e9cde6d67bf Mon Sep 17 00:00:00 2001 From: lsh Date: Tue, 23 Apr 2024 00:43:50 +0900 Subject: [PATCH] Feat: add `GET api/v1/backoffice/restaurants` --- .../controller/AdminRestaurantController.java | 35 +++++++++++++++++++ .../service/AdminRestaurantService.java | 21 +++++++++++ .../controller/RestaurantController.java | 3 +- .../repository/RestaurantRepository.java | 1 + .../review/service/RestaurantService.java | 2 ++ 5 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/cheffi/backoffice/controller/AdminRestaurantController.java create mode 100644 src/main/java/com/cheffi/backoffice/service/AdminRestaurantService.java diff --git a/src/main/java/com/cheffi/backoffice/controller/AdminRestaurantController.java b/src/main/java/com/cheffi/backoffice/controller/AdminRestaurantController.java new file mode 100644 index 00000000..8c8ecbb0 --- /dev/null +++ b/src/main/java/com/cheffi/backoffice/controller/AdminRestaurantController.java @@ -0,0 +1,35 @@ +package com.cheffi.backoffice.controller; + +import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Sort; +import org.springframework.data.web.PageableDefault; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.cheffi.backoffice.service.AdminRestaurantService; +import com.cheffi.common.response.ApiPageResponse; +import com.cheffi.review.domain.Restaurant; + +import io.swagger.v3.oas.annotations.Parameter; +import lombok.RequiredArgsConstructor; + +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("${api.prefix}/backoffice/restaurants") +public class AdminRestaurantController { + + private final AdminRestaurantService adminRestaurantService; + + @GetMapping + public ApiPageResponse searchRestaurants( + @Parameter(hidden = true) + @PageableDefault(size = 10, sort = "createdDate", direction = Sort.Direction.DESC) Pageable pageable, + @RequestParam(required = false) String name + ) { + return ApiPageResponse.success(adminRestaurantService.findAllRes(pageable, name)); + } +} diff --git a/src/main/java/com/cheffi/backoffice/service/AdminRestaurantService.java b/src/main/java/com/cheffi/backoffice/service/AdminRestaurantService.java new file mode 100644 index 00000000..c9718adb --- /dev/null +++ b/src/main/java/com/cheffi/backoffice/service/AdminRestaurantService.java @@ -0,0 +1,21 @@ +package com.cheffi.backoffice.service; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import com.cheffi.review.domain.Restaurant; +import com.cheffi.review.repository.RestaurantRepository; + +import lombok.RequiredArgsConstructor; + +@Service +@RequiredArgsConstructor +public class AdminRestaurantService { + + private final RestaurantRepository restaurantRepository; + + public Page findAllRes(Pageable pageable, String name) { + return restaurantRepository.findByNameContaining(name, pageable); + } +} diff --git a/src/main/java/com/cheffi/review/controller/RestaurantController.java b/src/main/java/com/cheffi/review/controller/RestaurantController.java index 3e82ccb4..39d10a47 100644 --- a/src/main/java/com/cheffi/review/controller/RestaurantController.java +++ b/src/main/java/com/cheffi/review/controller/RestaurantController.java @@ -13,6 +13,7 @@ import org.springframework.web.bind.annotation.RestController; import com.cheffi.common.response.ApiResponse; +import com.cheffi.review.domain.Restaurant; import com.cheffi.review.dto.RestaurantInfoDto; import com.cheffi.review.dto.request.RegisterRestaurantRequest; import com.cheffi.review.service.RestaurantInfoService; @@ -49,7 +50,7 @@ public ApiResponse> searchRestaurantsByName( @Operation(summary = "식당 등록 신청 API - 인증 필수", description = "사용자에 의한 식당 등록 API입니다. " + "임시적으로 식당이 등록되며 관리자에 의해 최종 등록됩니다.") - @PreAuthorize("hasRole('USER') and !hasAuthority('NO_PROFILE')") + @PreAuthorize("!hasAuthority('NO_PROFILE')") @PostMapping public ApiResponse registerTempRestaurant(@Valid @RequestBody RegisterRestaurantRequest request) { return ApiResponse.success(restaurantService.registerTempRestaurant(request)); diff --git a/src/main/java/com/cheffi/review/repository/RestaurantRepository.java b/src/main/java/com/cheffi/review/repository/RestaurantRepository.java index 739cd21e..eb3bf054 100644 --- a/src/main/java/com/cheffi/review/repository/RestaurantRepository.java +++ b/src/main/java/com/cheffi/review/repository/RestaurantRepository.java @@ -6,6 +6,7 @@ import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; +import com.cheffi.notice.domain.Notice; import com.cheffi.review.domain.Restaurant; public interface RestaurantRepository extends JpaRepository { diff --git a/src/main/java/com/cheffi/review/service/RestaurantService.java b/src/main/java/com/cheffi/review/service/RestaurantService.java index 9889755e..19d792d6 100644 --- a/src/main/java/com/cheffi/review/service/RestaurantService.java +++ b/src/main/java/com/cheffi/review/service/RestaurantService.java @@ -1,5 +1,7 @@ package com.cheffi.review.service; +import java.util.List; + import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service;