Skip to content

Commit 2f5078e

Browse files
authored
Merge pull request #50 from Team-PLAT/feat/#49/address
[FEAT] 주소 반환 API
2 parents 71cdfae + dc758a9 commit 2f5078e

File tree

13 files changed

+128
-22
lines changed

13 files changed

+128
-22
lines changed

src/main/java/com/cabin/plat/config/SecurityConfig.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
5757
.requestMatchers("/test").authenticated()
5858
.requestMatchers("/members/**").authenticated()
5959
.requestMatchers("/tracks/**").authenticated()
60+
.requestMatchers("address/**").authenticated()
6061
.anyRequest().denyAll());
6162

6263
http
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.cabin.plat.domain.address.controller;
2+
3+
import com.cabin.plat.config.AuthMember;
4+
import com.cabin.plat.domain.address.dto.AddressResponse;
5+
import com.cabin.plat.domain.address.service.AddressService;
6+
import com.cabin.plat.domain.member.entity.Member;
7+
import com.cabin.plat.global.common.BaseResponse;
8+
import io.swagger.v3.oas.annotations.Operation;
9+
import io.swagger.v3.oas.annotations.tags.Tag;
10+
import lombok.RequiredArgsConstructor;
11+
import org.springframework.web.bind.annotation.*;
12+
13+
@RestController
14+
@RequiredArgsConstructor
15+
@RequestMapping("/address")
16+
@Tag(name = "주소 API", description = "주소, 위치 관련 API 입니다.")
17+
public class AddressController {
18+
private final AddressService addressService;
19+
20+
@Operation(summary = "역지오코딩", description = "위도 경도를 받아서 해당 위치의 주소를 반환한다.")
21+
@GetMapping("/reverse-geocode")
22+
public BaseResponse<AddressResponse.AddressString> getAddress(
23+
@AuthMember Member member,
24+
@RequestParam double latitude,
25+
@RequestParam double longitude) {
26+
return BaseResponse.onSuccess(addressService.getAddress(latitude, longitude));
27+
}
28+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.cabin.plat.domain.address.dto;
2+
3+
import lombok.*;
4+
5+
public class AddressResponse {
6+
7+
@Getter
8+
@Builder
9+
@AllArgsConstructor
10+
@NoArgsConstructor
11+
public static class AddressString {
12+
private String address;
13+
}
14+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.cabin.plat.domain.address.mapper;
2+
3+
import com.cabin.plat.domain.address.dto.AddressResponse;
4+
import org.springframework.stereotype.Component;
5+
6+
@Component
7+
public class AddressMapper {
8+
public AddressResponse.AddressString toAddressString(
9+
String address
10+
) {
11+
return AddressResponse.AddressString.builder()
12+
.address(address)
13+
.build();
14+
}
15+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.cabin.plat.domain.address.service;
2+
3+
import com.cabin.plat.domain.address.dto.AddressResponse;
4+
import org.springframework.stereotype.Service;
5+
6+
public interface AddressService {
7+
AddressResponse.AddressString getAddress(double latitude, double longitude);
8+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.cabin.plat.domain.address.service;
2+
3+
import com.cabin.plat.domain.address.dto.AddressResponse;
4+
import com.cabin.plat.domain.address.dto.AddressResponse.AddressString;
5+
import com.cabin.plat.domain.address.mapper.AddressMapper;
6+
import com.cabin.plat.global.util.geocoding.AddressInfo;
7+
import com.cabin.plat.global.util.geocoding.ReverseGeoCoding;
8+
import lombok.RequiredArgsConstructor;
9+
import org.springframework.stereotype.Service;
10+
11+
@Service
12+
@RequiredArgsConstructor
13+
public class AddressServiceImpl implements AddressService {
14+
private final ReverseGeoCoding reverseGeoCoding;
15+
private final AddressMapper addressMapper;
16+
17+
@Override
18+
public AddressResponse.AddressString getAddress(double latitude, double longitude) {
19+
AddressInfo addressInfo = reverseGeoCoding.getAddressInfo(latitude, longitude);
20+
return addressMapper.toAddressString(addressInfo.toAddress());
21+
}
22+
}

src/main/java/com/cabin/plat/domain/track/controller/TrackController.java

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,11 @@
44
import com.cabin.plat.domain.member.entity.Member;
55
import com.cabin.plat.domain.track.dto.TrackRequest;
66
import com.cabin.plat.domain.track.dto.TrackResponse;
7-
import com.cabin.plat.domain.track.dto.TrackResponse.TrackDetail;
87
import com.cabin.plat.domain.track.service.TrackService;
98
import com.cabin.plat.global.common.BaseResponse;
109
import io.swagger.v3.oas.annotations.Operation;
1110
import io.swagger.v3.oas.annotations.tags.Tag;
1211
import lombok.RequiredArgsConstructor;
13-
import org.springframework.data.domain.Page;
14-
import org.springframework.data.domain.Pageable;
15-
import org.springframework.data.web.PageableDefault;
1612
import org.springframework.web.bind.annotation.*;
1713

1814
@RestController
@@ -39,13 +35,7 @@ public BaseResponse<TrackResponse.TrackMapList> getTracksByLocation(
3935
));
4036
}
4137

42-
@Operation(summary = "트랙 디테일 조회", description = "트랙의 아이디로 트랙의 디테일한 정보를 조회합니다. "
43-
+ "locationString : 장소 이름 (없으면 빈 문자열) "
44-
+ "address : 주소 "
45-
+ "imageUrl : 이미지 주소 (없으면 빈 문자열) "
46-
+ "context: : 본문 "
47-
+ "likeCount: 트랙의 총 좋아요 개수 "
48-
+ "isLiked : 사용자가 좋아요를 눌렀는지 여부")
38+
@Operation(summary = "트랙 디테일 조회", description = "트랙의 아이디로 트랙의 디테일한 정보를 조회합니다.")
4939
@GetMapping("/{trackId}")
5040
public BaseResponse<TrackResponse.TrackDetail> getTrackById(@AuthMember Member member, @PathVariable("trackId") Long trackId) {
5141
return BaseResponse.onSuccess(trackService.getTrackById(member, trackId));

src/main/java/com/cabin/plat/domain/track/dto/TrackResponse.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public static class TrackDetail {
4545
private LocalDateTime createdAt;
4646
private Double latitude;
4747
private Double longitude;
48-
private String locationString;
48+
private String buildingName;
4949
private String address;
5050
private String imageUrl;
5151
private String content;

src/main/java/com/cabin/plat/domain/track/entity/Location.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public class Location extends BaseEntity {
1717
@Column(name = "location_id")
1818
private Long id;
1919

20-
private String placeName;
20+
private String buildingName;
2121

2222
@Column(nullable = false)
2323
private String address;

src/main/java/com/cabin/plat/domain/track/mapper/TrackMapper.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public TrackResponse.TrackDetail toTrackDetail(
3939
LocalDateTime createdAt,
4040
Double latitude,
4141
Double longitude,
42-
String locationString,
42+
String buildingName,
4343
String address,
4444
String imageUrl,
4545
String content,
@@ -53,7 +53,7 @@ public TrackResponse.TrackDetail toTrackDetail(
5353
.createdAt(createdAt)
5454
.latitude(latitude)
5555
.longitude(longitude)
56-
.locationString(locationString)
56+
.buildingName(buildingName)
5757
.address(address)
5858
.imageUrl(imageUrl)
5959
.content(content)
@@ -96,9 +96,9 @@ public TrackLike toTrackLike(Member member, Track track) {
9696
.build();
9797
}
9898

99-
public Location toLocation(String placeName, String address, Double latitude, Double longitude) {
99+
public Location toLocation(String buildingName, String address, Double latitude, Double longitude) {
100100
return Location.builder()
101-
.placeName(placeName)
101+
.buildingName(buildingName)
102102
.address(address)
103103
.latitude(latitude)
104104
.longitude(longitude)

0 commit comments

Comments
 (0)