22
33import com .fasterxml .jackson .annotation .JsonIgnoreProperties ;
44import com .fasterxml .jackson .annotation .JsonProperty ;
5+ import eatda .domain .store .Store ;
6+ import eatda .domain .store .StoreCategory ;
7+ import java .util .Map ;
58
69@ JsonIgnoreProperties (ignoreUnknown = true )
710public record StoreSearchResult (
@@ -17,6 +20,17 @@ public record StoreSearchResult(
1720 @ JsonProperty ("x" ) double longitude
1821) {
1922
23+ private static final Map <String , StoreCategory > PREFIX_TO_CATEGORY = Map .of (
24+ "음식점 > 한식" , StoreCategory .KOREAN ,
25+ "음식점 > 중식" , StoreCategory .CHINESE ,
26+ "음식점 > 일식" , StoreCategory .JAPANESE ,
27+ "음식점 > 양식" , StoreCategory .WESTERN ,
28+ "음식점 > 카페" , StoreCategory .CAFE ,
29+ "음식점 > 간식 > 제과,베이커리" , StoreCategory .BAKERY ,
30+ "음식점 > 술집" , StoreCategory .PUB ,
31+ "음식점 > 패스트푸드" , StoreCategory .FAST_FOOD
32+ );
33+
2034 public boolean isFoodStore () {
2135 return "FD6" .equals (categoryGroupCode );
2236 }
@@ -27,4 +41,31 @@ public boolean isInSeoul() {
2741 }
2842 return lotNumberAddress .trim ().startsWith ("서울" );
2943 }
44+
45+ public StoreCategory getStoreCategory () {
46+ if (categoryName == null ) {
47+ return StoreCategory .OTHER ;
48+ }
49+
50+ return PREFIX_TO_CATEGORY .entrySet ()
51+ .stream ()
52+ .filter (entry -> categoryName .startsWith (entry .getKey ()))
53+ .map (Map .Entry ::getValue )
54+ .findFirst ()
55+ .orElse (StoreCategory .OTHER );
56+ }
57+
58+ public Store toStore () {
59+ return Store .builder ()
60+ .kakaoId (kakaoId )
61+ .category (getStoreCategory ())
62+ .phoneNumber (phoneNumber )
63+ .name (name )
64+ .placeUrl (placeUrl )
65+ .roadAddress (roadAddress )
66+ .lotNumberAddress (lotNumberAddress )
67+ .latitude (latitude )
68+ .longitude (longitude )
69+ .build ();
70+ }
3071}
0 commit comments