11package swyp .mingling .domain .meeting .service ;
22
3+ import java .util .Arrays ;
4+ import java .util .List ;
5+ import java .util .Optional ;
36import lombok .Getter ;
47import lombok .RequiredArgsConstructor ;
58import lombok .extern .slf4j .Slf4j ;
9+ import org .apache .commons .lang3 .StringUtils ;
610import org .springframework .cache .annotation .Cacheable ;
711import org .springframework .stereotype .Service ;
812import swyp .mingling .domain .meeting .dto .response .RecommendResponse ;
1115import swyp .mingling .global .enums .KakaoCategoryGroupCode ;
1216import swyp .mingling .global .exception .BusinessException ;
1317
14- import java .util .Arrays ;
15- import java .util .List ;
16- import java .util .Optional ;
17-
1818/**
1919 * 장소 추천 UseCase
2020 */
@@ -65,7 +65,7 @@ public RecommendResponse execute(String midPlace, String category, int page, int
6565 .map (doc -> RecommendResponse .PlaceInfo .builder ()
6666 .placeName (doc .getPlaceName ())
6767 .categoryName (doc .getCategoryName ())
68- .categoryGroupName (doc .getCategoryGroupName ())
68+ .categoryGroupName (getCategoryGroupName ( doc .getCategoryGroupName (), categoryEnum ))
6969 .phone (doc .getPhone ())
7070 .addressName (doc .getAddressName ())
7171 .roadAddressName (doc .getRoadAddressName ())
@@ -138,4 +138,17 @@ static Optional<Category> from(String category) {
138138 .findFirst ();
139139 }
140140 }
141+
142+ /**
143+ * 카카오 장소 검색 응답의 categoryGroupName 값을 반환
144+ * 외부 API 응답에서 categoryGroupName 이 null 또는 빈 문자열인 경우
145+ * Category enum 의 categoryName 값을 기본값으로 사용
146+ *
147+ * @param categoryGroupName 카카오 장소 검색 API 에서 전달된 categoryGroupName 값
148+ * @param categoryEnum Category enum
149+ * @return null 또는 빈 값일 경우 기본 카테고리 이름으로 대체된 categoryGroupName
150+ */
151+ private static String getCategoryGroupName (String categoryGroupName , Category categoryEnum ) {
152+ return StringUtils .defaultIfBlank (categoryGroupName , categoryEnum .getCategoryName ());
153+ }
141154}
0 commit comments