Skip to content

Commit

Permalink
#18 [Refactor] 위도/경도 -> 주소 반환 형태 DTO로 수정
Browse files Browse the repository at this point in the history
  • Loading branch information
JSoi committed Jul 22, 2022
1 parent 6ab07cf commit 2751527
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public class LocationController {

@ApiOperation(value = "위도, 경도를 주소로 바꾸는 함수")
@GetMapping("/convert/geo")
public Map<String, Object> getAddressByGeo(@RequestParam BigDecimal lat, @RequestParam BigDecimal lng) {
public LocationPartDto.Address getAddressByGeo(@RequestParam BigDecimal lat, @RequestParam BigDecimal lng) {
return locationService.convertGeoToAddressRT(String.valueOf(lat), String.valueOf(lng));
}

Expand Down
11 changes: 10 additions & 1 deletion src/main/java/com/mpnp/baechelin/api/dto/LocationPartDto.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,21 @@ public class LocationPartDto {
@Builder
public static class LatLong{
@Builder.Default
private boolean status = true;
private boolean status = false;
private String latitude;
private String longitude;

public boolean validate() {
return this.latitude != null && this.longitude != null;
}
}

@AllArgsConstructor
@Getter @Setter
@Builder
public static class Address{
@Builder.Default
private boolean status = false;
private String address;
}
}
31 changes: 17 additions & 14 deletions src/main/java/com/mpnp/baechelin/api/service/LocationService.java
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public class LocationService {
* @param address 주소
* @return LocationKeywordSearchForm의 규격에 맞는 결과 하나를 가져옴
*/
public LocationKeywordSearchForm getLatLngByAddressWC(String address) {
public LocationKeywordSearchForm convertAddressToGeoWC(String address) {
WebClient client = WebClient.builder()
.baseUrl("https://dapi.kakao.com/v2/local/search/keyword.json")
.defaultUriVariables(Collections.singletonMap("url", "https://dapi.kakao.com/v2/local/search/keyword.json"))
Expand Down Expand Up @@ -280,7 +280,7 @@ private String categoryFilter(String category) {
* @param lng 경도
* @return 위도, 경도를 카카오맵 API(RestTemplate)를 통해 주소로 변환 후 Map에 넣어 반환
*/
public Map<String, Object> convertGeoToAddressRT(String lat, String lng) {
public LocationPartDto.Address convertGeoToAddressRT(String lat, String lng) {
HttpHeaders headers = new HttpHeaders();
headers.setAccept(List.of(MediaType.APPLICATION_JSON));
headers.setContentType(MediaType.APPLICATION_JSON);
Expand All @@ -298,18 +298,21 @@ public Map<String, Object> convertGeoToAddressRT(String lat, String lng) {
uri, HttpMethod.GET, new HttpEntity<>(headers), LocationAddressSearchForm.class
);
LocationAddressSearchForm locationKeywordSearchForm = resultRe.getBody();
Map<String, Object> map = new HashMap<>();
if (locationKeywordSearchForm == null) {
map.put("status", false);
} else {
LocationAddressSearchForm.TotalAddress address = Arrays.stream(locationKeywordSearchForm.getDocuments()).findFirst().orElse(null);
if (address != null) {
map.put("address", address.getAddress().getAddress_name());
map.put("status", true);
} else {
map.put("status", false);
}
return formToDto(locationKeywordSearchForm);
}

private LocationPartDto.Address formToDto(LocationAddressSearchForm resultRe) {
LocationPartDto.Address addressInfoDto = LocationPartDto.Address.builder().build();
if (resultRe == null) {
return addressInfoDto;
}
LocationAddressSearchForm.TotalAddress address = Arrays.stream(resultRe.getDocuments()).findFirst().orElse(null);
if (address != null) {
addressInfoDto = LocationPartDto.Address.builder()
.address(address.getAddress().getAddress_name())
.status(true)
.build();
}
return map;
return addressInfoDto;
}
}

0 comments on commit 2751527

Please sign in to comment.