-
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.
feat: 500m 내의 SafetyFacility 정보 반환 api 추가
- Loading branch information
lovee9523
committed
Apr 8, 2024
1 parent
b306939
commit 398e19b
Showing
5 changed files
with
160 additions
and
0 deletions.
There are no files selected for viewing
22 changes: 22 additions & 0 deletions
22
...ta/seoul_backend/domain/safteyfacility/application/dto/request/SafetyFacilityRequest.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 seouldata.seoul_backend.domain.safteyfacility.application.dto.request; | ||
|
||
import lombok.Builder; | ||
import lombok.Getter; | ||
import lombok.NoArgsConstructor; | ||
|
||
public class SafetyFacilityRequest { | ||
|
||
@Getter | ||
@NoArgsConstructor | ||
public static class SafetyFacilityNearRequest { | ||
private double userLon; | ||
private double userLat; | ||
|
||
@Builder | ||
public SafetyFacilityNearRequest(double userLon, double userLat) { | ||
this.userLat = userLat; | ||
this.userLon = userLon; | ||
} | ||
|
||
} | ||
} |
32 changes: 32 additions & 0 deletions
32
.../seoul_backend/domain/safteyfacility/application/dto/response/SafetyFacilityResponse.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,32 @@ | ||
package seouldata.seoul_backend.domain.safteyfacility.application.dto.response; | ||
|
||
import lombok.Builder; | ||
import lombok.Getter; | ||
import lombok.NoArgsConstructor; | ||
|
||
public class SafetyFacilityResponse { | ||
|
||
@Getter | ||
@NoArgsConstructor | ||
public static class SafetyFacilityNearResponse{ | ||
private String city; | ||
private String dong; | ||
private String road; | ||
private Long number; | ||
private String lon; | ||
private double lat; | ||
private String name; | ||
|
||
@Builder | ||
public SafetyFacilityNearResponse(String city, String dong, String road, Long number, | ||
String lon, double lat, String name) { | ||
this.city = city; | ||
this.dong = dong; | ||
this.road = road; | ||
this.number = number; | ||
this.lon = lon; | ||
this.lat = lat; | ||
this.name = name; | ||
} | ||
} | ||
} |
58 changes: 58 additions & 0 deletions
58
...ata/seoul_backend/domain/safteyfacility/application/service/SafetyFacilityGetService.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,58 @@ | ||
package seouldata.seoul_backend.domain.safteyfacility.application.service; | ||
|
||
import jakarta.transaction.Transactional; | ||
import lombok.RequiredArgsConstructor; | ||
import org.springframework.stereotype.Service; | ||
import seouldata.seoul_backend.common.DistanceUtils; | ||
import seouldata.seoul_backend.domain.safteyfacility.application.dto.request.SafetyFacilityRequest; | ||
import seouldata.seoul_backend.domain.safteyfacility.application.dto.response.SafetyFacilityResponse; | ||
import seouldata.seoul_backend.domain.safteyfacility.domain.entity.SafetyFacility; | ||
import seouldata.seoul_backend.domain.safteyfacility.domain.entity.SafetyFacilityId; | ||
import seouldata.seoul_backend.domain.safteyfacility.domain.service.SafetyFacilityQueryService; | ||
|
||
import java.util.ArrayList; | ||
import java.util.List; | ||
|
||
@Service | ||
@RequiredArgsConstructor | ||
@Transactional | ||
public class SafetyFacilityGetService { | ||
|
||
private final SafetyFacilityQueryService safetyFacilityQueryService; | ||
|
||
public List<SafetyFacilityResponse.SafetyFacilityNearResponse> getSafetyFacilityNear(SafetyFacilityRequest.SafetyFacilityNearRequest safetyFacilityNearRequest) { | ||
// 사용자 현재 위치 | ||
double userLon = safetyFacilityNearRequest.getUserLon(); | ||
double userLat = safetyFacilityNearRequest.getUserLat(); | ||
|
||
List<SafetyFacility> allSafetyFacility = safetyFacilityQueryService.findAll(); | ||
|
||
List<SafetyFacilityResponse.SafetyFacilityNearResponse> nearSafetyFacilities = new ArrayList<>(); | ||
|
||
for (SafetyFacility safetyFacility : allSafetyFacility) { | ||
double lat = safetyFacility.getId().getLat(); | ||
String lonStr = safetyFacility.getId().getLon().replaceAll("[^0-9\\.]", ""); | ||
Double lon = Double.valueOf(lonStr); | ||
|
||
double distance = DistanceUtils.calculateDistance(userLon, userLat, lon, lat); | ||
if(distance <= 500) { | ||
SafetyFacilityResponse.SafetyFacilityNearResponse nearSafetyFacility = SafetyFacilityResponse.SafetyFacilityNearResponse.builder() | ||
.city(safetyFacility.getCity()) | ||
.dong(safetyFacility.getDong()) | ||
.number(safetyFacility.getNumber()) | ||
.road(safetyFacility.getRoad()) | ||
.name(safetyFacility.getId().getName()) | ||
.lat(safetyFacility.getId().getLat()) | ||
.lon(safetyFacility.getId().getLon()) | ||
.build(); | ||
|
||
nearSafetyFacilities.add(nearSafetyFacility); | ||
} | ||
|
||
} | ||
|
||
return nearSafetyFacilities; | ||
|
||
} | ||
|
||
} |
22 changes: 22 additions & 0 deletions
22
...uldata/seoul_backend/domain/safteyfacility/domain/service/SafetyFacilityQueryService.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 seouldata.seoul_backend.domain.safteyfacility.domain.service; | ||
|
||
import jakarta.transaction.Transactional; | ||
import lombok.RequiredArgsConstructor; | ||
import org.springframework.stereotype.Service; | ||
import seouldata.seoul_backend.domain.safteyfacility.domain.entity.SafetyFacility; | ||
import seouldata.seoul_backend.domain.safteyfacility.domain.repository.SafetyFacilityRepository; | ||
|
||
import java.util.List; | ||
|
||
@Service | ||
@RequiredArgsConstructor | ||
@Transactional | ||
public class SafetyFacilityQueryService { | ||
|
||
private final SafetyFacilityRepository safetyFacilityRepository; | ||
|
||
public List<SafetyFacility> findAll() { | ||
return safetyFacilityRepository.findAll(); | ||
} | ||
|
||
} |
26 changes: 26 additions & 0 deletions
26
.../seouldata/seoul_backend/domain/safteyfacility/presentation/SafetyFacilityController.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,26 @@ | ||
package seouldata.seoul_backend.domain.safteyfacility.presentation; | ||
|
||
import lombok.RequiredArgsConstructor; | ||
import org.springframework.http.ResponseEntity; | ||
import org.springframework.web.bind.annotation.GetMapping; | ||
import org.springframework.web.bind.annotation.RequestBody; | ||
import org.springframework.web.bind.annotation.RestController; | ||
import seouldata.seoul_backend.domain.safteyfacility.application.dto.request.SafetyFacilityRequest; | ||
import seouldata.seoul_backend.domain.safteyfacility.application.dto.response.SafetyFacilityResponse; | ||
import seouldata.seoul_backend.domain.safteyfacility.application.service.SafetyFacilityGetService; | ||
|
||
import java.util.List; | ||
|
||
@RestController | ||
@RequiredArgsConstructor | ||
public class SafetyFacilityController { | ||
|
||
private final SafetyFacilityGetService safetyFacilityGetService; | ||
|
||
@GetMapping("/api/safetyfacilities") | ||
public ResponseEntity getSafetyFacilityNear(@RequestBody SafetyFacilityRequest.SafetyFacilityNearRequest safetyFacilityNearRequest) { | ||
List<SafetyFacilityResponse.SafetyFacilityNearResponse> safetyFacilityNear = safetyFacilityGetService.getSafetyFacilityNear(safetyFacilityNearRequest); | ||
return ResponseEntity.ok(safetyFacilityNear); | ||
} | ||
|
||
} |