diff --git a/src/main/java/com/hyetaekon/hyetaekon/publicservice/controller/PublicServiceController.java b/src/main/java/com/hyetaekon/hyetaekon/publicservice/controller/PublicServiceController.java index cc35578..7cfd76c 100644 --- a/src/main/java/com/hyetaekon/hyetaekon/publicservice/controller/PublicServiceController.java +++ b/src/main/java/com/hyetaekon/hyetaekon/publicservice/controller/PublicServiceController.java @@ -1,5 +1,6 @@ package com.hyetaekon.hyetaekon.publicservice.controller; +import com.hyetaekon.hyetaekon.publicservice.dto.FilterOptionDto; import com.hyetaekon.hyetaekon.publicservice.dto.PublicServiceDetailResponseDto; import com.hyetaekon.hyetaekon.publicservice.dto.PublicServiceListResponseDto; import com.hyetaekon.hyetaekon.publicservice.service.PublicServiceHandler; @@ -15,6 +16,7 @@ import org.springframework.web.bind.annotation.*; import java.util.List; +import java.util.Map; @Validated @@ -41,6 +43,11 @@ public ResponseEntity> getAllServices( sort, specialGroups, familyTypes, categories, PageRequest.of(page, size), userId)); } + @GetMapping("/filters") + public ResponseEntity>> getFilterOptions() { + return ResponseEntity.ok(publicServiceHandler.getFilterOptions()); + } + // 서비스 분야별 공공서비스 목록 조회 /*@GetMapping("/category/{category}") public ResponseEntity> getServicesByCategory ( diff --git a/src/main/java/com/hyetaekon/hyetaekon/publicservice/dto/FilterOptionDto.java b/src/main/java/com/hyetaekon/hyetaekon/publicservice/dto/FilterOptionDto.java new file mode 100644 index 0000000..594dbe5 --- /dev/null +++ b/src/main/java/com/hyetaekon/hyetaekon/publicservice/dto/FilterOptionDto.java @@ -0,0 +1,11 @@ +package com.hyetaekon.hyetaekon.publicservice.dto; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public class FilterOptionDto { + private String code; + private String label; +} \ No newline at end of file diff --git a/src/main/java/com/hyetaekon/hyetaekon/publicservice/service/PublicServiceHandler.java b/src/main/java/com/hyetaekon/hyetaekon/publicservice/service/PublicServiceHandler.java index 9f8d892..b11117b 100644 --- a/src/main/java/com/hyetaekon/hyetaekon/publicservice/service/PublicServiceHandler.java +++ b/src/main/java/com/hyetaekon/hyetaekon/publicservice/service/PublicServiceHandler.java @@ -3,6 +3,7 @@ import com.hyetaekon.hyetaekon.bookmark.repository.BookmarkRepository; import com.hyetaekon.hyetaekon.common.exception.ErrorCode; import com.hyetaekon.hyetaekon.common.exception.GlobalException; +import com.hyetaekon.hyetaekon.publicservice.dto.FilterOptionDto; import com.hyetaekon.hyetaekon.publicservice.dto.PublicServiceDetailResponseDto; import com.hyetaekon.hyetaekon.publicservice.dto.PublicServiceListResponseDto; import com.hyetaekon.hyetaekon.publicservice.entity.FamilyTypeEnum; @@ -21,8 +22,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; @Service @@ -200,6 +200,31 @@ public Page getAllServices( }); } + // 기존 코드에 아래 메서드 추가 + public Map> getFilterOptions() { + Map> filterOptions = new HashMap<>(); + + // 서비스 분야 (카테고리) 옵션 + List categoryOptions = Arrays.stream(ServiceCategory.values()) + .map(category -> new FilterOptionDto(category.name(), category.getType())) + .collect(Collectors.toList()); + filterOptions.put("categories", categoryOptions); + + // 특수 그룹 (가구형태) 옵션 + List specialGroupOptions = Arrays.stream(SpecialGroupEnum.values()) + .map(group -> new FilterOptionDto(group.name(), group.getType())) + .collect(Collectors.toList()); + filterOptions.put("specialGroups", specialGroupOptions); + + // 가족 유형 (가구상황) 옵션 + List familyTypeOptions = Arrays.stream(FamilyTypeEnum.values()) + .map(type -> new FilterOptionDto(type.name(), type.getType())) + .collect(Collectors.toList()); + filterOptions.put("familyTypes", familyTypeOptions); + + return filterOptions; + } + public Page getBookmarkedServices(Long userId, Pageable pageable) { Page bookmarkedServices = publicServiceRepository.findByBookmarks_User_Id(userId, pageable);