11package com .back .web7_9_codecrete_be .domain .location .controller ;
22
3- import com .back .web7_9_codecrete_be .domain .location .dto .KakaoLocalResponse ;
3+ import com .back .web7_9_codecrete_be .domain .location .dto .response .KakaoLocalResponse ;
4+ import com .back .web7_9_codecrete_be .domain .location .dto .response .KakaoMobilityResponse ;
5+ import com .back .web7_9_codecrete_be .domain .location .dto .response .KakaoRouteTransitResponse ;
46import com .back .web7_9_codecrete_be .domain .location .service .KakaoLocalService ;
7+ import com .back .web7_9_codecrete_be .global .error .code .LocationErrorCode ;
8+ import com .back .web7_9_codecrete_be .global .error .exception .BusinessException ;
59import com .back .web7_9_codecrete_be .global .rsData .RsData ;
610import io .swagger .v3 .oas .annotations .Operation ;
711import io .swagger .v3 .oas .annotations .Parameter ;
@@ -32,7 +36,7 @@ public class KakaoApiController {
3236 public List <KakaoLocalResponse .Document > KakaoRestaurants (
3337 @ RequestParam double lat ,
3438 @ RequestParam double lon
35- ){
39+ ) {
3640 return kakaoLocalService .searchNearbyRestaurants (lat , lon );
3741 }
3842
@@ -46,7 +50,7 @@ public List<KakaoLocalResponse.Document> KakaoRestaurants(
4650 public List <KakaoLocalResponse .Document > KakaoCafes (
4751 @ RequestParam double lat ,
4852 @ RequestParam double lon
49- ){
53+ ) {
5054 return kakaoLocalService .searchNearbyCafes (lat , lon );
5155 }
5256
@@ -68,4 +72,74 @@ public RsData<String> coord2Address(
6872 String addressName = kakaoLocalService .coordinateToAddressName (lat , lon );
6973 return RsData .success ("좌표를 주소로 변환했습니다." , addressName );
7074 }
75+
76+
77+ @ GetMapping ("/navigate/guides" )
78+ public List <KakaoMobilityResponse .Guide > navigateGuides (
79+ @ RequestParam double startX ,
80+ @ RequestParam double startY ,
81+ @ RequestParam double endX ,
82+ @ RequestParam double endY
83+ ) {
84+ KakaoMobilityResponse res = kakaoLocalService .NaviSearch (startX , startY , endX , endY );
85+
86+ if (res == null || res .getRoutes () == null || res .getRoutes ().isEmpty ()) {
87+ return List .of ();
88+ }
89+
90+ KakaoMobilityResponse .Route route0 = res .getRoutes ().get (0 );
91+ if (route0 .getSections () == null || route0 .getSections ().isEmpty ()) {
92+ return List .of ();
93+ }
94+
95+ return route0 .getSections ().stream ()
96+ .filter (section -> section .getGuides () != null && !section .getGuides ().isEmpty ())
97+ .flatMap (section -> section .getGuides ().stream ())
98+ .toList ();
99+ }
100+ @ GetMapping ("/navigate/summary" )
101+ public KakaoMobilityResponse .Summary navigateSummary (
102+ @ RequestParam double startX ,
103+ @ RequestParam double startY ,
104+ @ RequestParam double endX ,
105+ @ RequestParam double endY
106+ ) {
107+ KakaoMobilityResponse res = kakaoLocalService .NaviSearchSummary (startX , startY , endX , endY );
108+
109+ if (res == null || res .getRoutes () == null || res .getRoutes ().isEmpty ()) {
110+ throw new BusinessException (LocationErrorCode .ROUTE_NOT_FOUND );
111+ }
112+
113+ KakaoMobilityResponse .Route route0 = res .getRoutes ().get (0 );
114+ if (route0 .getSummary () == null ) {
115+ throw new BusinessException (LocationErrorCode .ROUTE_NOT_FOUND );
116+ }
117+
118+ return route0 .getSummary ();
119+
120+ }
121+
122+ @ PostMapping ("/navigate/onlyguide" )
123+ public List <KakaoRouteTransitResponse .Guide > navigateOnlyGuides (
124+ @ RequestParam double startX ,
125+ @ RequestParam double startY ,
126+ @ RequestParam double endX ,
127+ @ RequestParam double endY ,
128+ @ RequestParam double wayX ,
129+ @ RequestParam double wayY
130+ ) {
131+ KakaoRouteTransitResponse res = kakaoLocalService .NaviSearchTransit (startX , startY , endX , endY , wayX , wayY );
132+
133+ if (res == null || res .getRoutes () == null || res .getRoutes ().isEmpty ()) {
134+ return List .of ();
135+ }
136+
137+ KakaoRouteTransitResponse .Route route0 = res .getRoutes ().get (0 );
138+
139+ return route0 .getSections ().stream ()
140+ .filter (section -> section .getGuides () != null && !section .getGuides ().isEmpty ())
141+ .flatMap (section -> section .getGuides ().stream ())
142+ .toList ();
143+ }
71144}
145+
0 commit comments