-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
5329667
commit 9b73658
Showing
7 changed files
with
213 additions
and
9 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
22 changes: 22 additions & 0 deletions
22
src/main/java/sungdong29/backend/domain/walk/dto/response/WalkPathListResponseDTO.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
package sungdong29.backend.domain.walk.dto.response; | ||
|
||
import lombok.Builder; | ||
import sungdong29.backend.domain.walk.vo.WalkPathVo; | ||
|
||
import java.util.List; | ||
|
||
public class WalkPathListResponseDTO { | ||
|
||
List<WalkPathVo> walkPathList; | ||
|
||
@Builder | ||
private WalkPathListResponseDTO(List<WalkPathVo> walkPathList) { | ||
this.walkPathList = walkPathList; | ||
} | ||
|
||
public static WalkPathListResponseDTO from(List<WalkPathVo> walkPathList) { | ||
return WalkPathListResponseDTO.builder() | ||
.walkPathList(walkPathList) | ||
.build(); | ||
} | ||
} |
33 changes: 33 additions & 0 deletions
33
src/main/java/sungdong29/backend/domain/walk/dto/response/WalkPathResponseDTO.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
package sungdong29.backend.domain.walk.dto.response; | ||
|
||
import lombok.Builder; | ||
import lombok.Getter; | ||
import sungdong29.backend.domain.walk.domain.Walk; | ||
|
||
import java.util.List; | ||
|
||
@Getter | ||
public class WalkPathResponseDTO { | ||
|
||
private Long id; | ||
private String name; | ||
private List<String> lineString; | ||
|
||
@Builder | ||
private WalkPathResponseDTO( | ||
Long id, | ||
String name, | ||
List<String> lineString) { | ||
this.id = id; | ||
this.name = name; | ||
this.lineString = lineString; | ||
} | ||
|
||
public static WalkPathResponseDTO of(Walk walk, List<String> lineString) { | ||
return WalkPathResponseDTO.builder() | ||
.id(walk.getId()) | ||
.name(walk.getName()) | ||
.lineString(lineString) | ||
.build(); | ||
} | ||
} |
79 changes: 79 additions & 0 deletions
79
src/main/java/sungdong29/backend/domain/walk/helper/WalkHelper.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,79 @@ | ||
package sungdong29.backend.domain.walk.helper; | ||
|
||
import lombok.RequiredArgsConstructor; | ||
import org.json.JSONArray; | ||
import org.json.JSONObject; | ||
import org.springframework.beans.factory.annotation.Value; | ||
import okhttp3.*; | ||
|
||
import org.springframework.stereotype.Component; | ||
import sungdong29.backend.domain.place.domain.Place; | ||
import sungdong29.backend.domain.walk.domain.Walk; | ||
import java.io.IOException; | ||
import java.util.ArrayList; | ||
import java.util.List; | ||
|
||
@Component | ||
@RequiredArgsConstructor | ||
public class WalkHelper { | ||
|
||
@Value("${openapi.tmap.key}") | ||
private String TMAP_APP_KEY; | ||
|
||
public List<String> getLineString(String xCoordinate, String yCoordinate, Place place, Walk walk) { | ||
OkHttpClient client = new OkHttpClient(); | ||
|
||
MediaType mediaType = MediaType.parse("application/json"); | ||
String jsonString = "{\"startX\":" + xCoordinate + ",\"startY\":" + yCoordinate + ",\"endX\":" + place.getXCoordinate() + ",\"endY\":" + place.getYCoordinate() + ",\"passList\":\"" + walk.getXCoordinate() + ", " + walk.getYCoordinate() + "\",\"startName\":\"내 위치\",\"endName\":\"" + place.getName() + "\"}"; | ||
RequestBody body = RequestBody.create(jsonString, mediaType); | ||
Request request = new Request.Builder() | ||
.url("https://apis.openapi.sk.com/tmap/routes/pedestrian?version=1&callback=function") | ||
.post(body) | ||
.addHeader("accept", "application/json") | ||
.addHeader("content-type", "application/json") | ||
.addHeader("appKey", TMAP_APP_KEY) | ||
.build(); | ||
try { | ||
Response response = client.newCall(request).execute(); | ||
String stringResponse = response.body().string(); | ||
|
||
return extractLineStringCoordinates(stringResponse); | ||
} catch (IOException e) { | ||
e.printStackTrace(); | ||
} | ||
return null; | ||
} | ||
|
||
private static List<String> extractLineStringCoordinates(String stringResponse) { | ||
List<String> lineStringCoordinates = new ArrayList<>(); | ||
|
||
JSONObject jsonObject = new JSONObject(stringResponse); | ||
JSONArray features = jsonObject.getJSONArray("features"); | ||
|
||
for (int i = 0; i < features.length(); i++) { | ||
JSONObject feature = features.getJSONObject(i); | ||
JSONObject geometry = feature.getJSONObject("geometry"); | ||
|
||
if ("LineString".equals(geometry.getString("type"))) { | ||
JSONArray coordinatesArray = geometry.getJSONArray("coordinates"); | ||
|
||
if (i == 0) { | ||
// For the first LineString, include all coordinates | ||
for (int j = 0; j < coordinatesArray.length(); j++) { | ||
JSONArray coordinate = coordinatesArray.getJSONArray(j); | ||
lineStringCoordinates.add(coordinate.toString()); | ||
} | ||
} else { | ||
// For other LineStrings, exclude the first coordinate | ||
for (int j = 1; j < coordinatesArray.length(); j++) { | ||
JSONArray coordinate = coordinatesArray.getJSONArray(j); | ||
lineStringCoordinates.add(coordinate.toString()); | ||
} | ||
} | ||
} | ||
} | ||
|
||
return lineStringCoordinates; | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
35 changes: 35 additions & 0 deletions
35
src/main/java/sungdong29/backend/domain/walk/vo/WalkPathVo.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
package sungdong29.backend.domain.walk.vo; | ||
|
||
import lombok.Builder; | ||
import lombok.Getter; | ||
import lombok.NoArgsConstructor; | ||
import sungdong29.backend.domain.walk.domain.Walk; | ||
|
||
import java.util.List; | ||
|
||
@Getter | ||
@NoArgsConstructor | ||
public class WalkPathVo { | ||
|
||
private Long id; | ||
private String name; | ||
private List<String> lineString; | ||
|
||
@Builder | ||
private WalkPathVo( | ||
Long id, | ||
String name, | ||
List<String> lineString) { | ||
this.id = id; | ||
this.name = name; | ||
this.lineString = lineString; | ||
} | ||
|
||
public static WalkPathVo of(Walk walk, List<String> lineString) { | ||
return WalkPathVo.builder() | ||
.id(walk.getId()) | ||
.name(walk.getName()) | ||
.lineString(lineString) | ||
.build(); | ||
} | ||
} |