Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,12 @@ public record KakaoLoginResponse(
)
boolean registered,

@Schema(
description = "MOIVE 사용자 ID. 신규 회원인 경우 null",
example = "1"
)
Long userId,

@Schema(
description = "카카오 닉네임",
example = "한재경"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ public KakaoLoginResponse loginWithKakao(String accessToken) {
if (existingUser.isEmpty()) {
return new KakaoLoginResponse(
false,
null,
kakaoUser.properties().nickname(),
kakaoUser.properties().profileImage(),
kakaoUser.kakaoAccount().email(),
Expand All @@ -91,6 +92,7 @@ public KakaoLoginResponse loginWithKakao(String accessToken) {
// 7. 기존 회원 정보와 서비스 토큰 반환
return new KakaoLoginResponse(
true,
user.getId(),
kakaoUser.properties().nickname(),
kakaoUser.properties().profileImage(),
kakaoUser.kakaoAccount().email(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
import com.moive.MoiveBE.domain.recommendation.dto.VWorldLegalDong;
import com.moive.MoiveBE.domain.recommendation.dto.VWorldSigunguResponse;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import lombok.extern.slf4j.XSlf4j;
import org.springframework.stereotype.Service;

import java.util.Comparator;
Expand All @@ -14,6 +16,7 @@
import java.util.Map;
import java.util.stream.Collectors;

@Slf4j
@Service
@RequiredArgsConstructor
public class LegalDongCandidateService {
Expand Down Expand Up @@ -83,6 +86,11 @@ public List<AreaCandidate> generate(AreaCenter center) {

private String getFullSigunguName(String signguCode) {

log.info(
"[VWorld] 시군구 조회 - signguCode={}",
signguCode
);

VWorldSigunguResponse response =
vWorldLegalDongClient.getSigungu(signguCode);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ public List<VWorldLegalDong> parse(String xml) {
getText(dongElement, "ld_emd_code_nm");

String signguCode =
getText(dongElement, "src_signgu_code");
code.substring(0, 5);

Coordinate center =
calculateCenter(dongElement);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ void setUp() {

// then
assertThat(result.registered()).isFalse();
assertThat(result.userId()).isNull();
assertThat(result.nickname()).isEqualTo("테스트유저");
assertThat(result.profileImageUrl())
.isEqualTo("https://example.com/profile.jpg");
Expand Down Expand Up @@ -114,6 +115,7 @@ void setUp() {

// then
assertThat(result.registered()).isTrue();
assertThat(result.userId()).isEqualTo(1L);
assertThat(result.email()).isEqualTo("test@kakao.com");

assertThat(result.token()).isNotNull();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,8 @@ class VWorldLegalDongClientIntegrationTest {

AreaCenter center =
new AreaCenter(
37.5599985,
127.6927097
37.3661738,
127.1080975
);

String bbox =
Expand All @@ -45,6 +45,8 @@ class VWorldLegalDongClientIntegrationTest {
String response =
vWorldLegalDongClient.getLegalDongs(bbox);

System.out.println(response);

var legalDongs =
parser.parse(response);

Expand Down Expand Up @@ -84,4 +86,32 @@ class VWorldLegalDongClientIntegrationTest {

assertThat(response).isNotNull();
}

@Test
void 문제_발생_좌표에서_법정동_후보를_조회한다() {

AreaCenter center =
new AreaCenter(
37.3661738,
127.1080975
);

var candidates =
legalDongCandidateService.generate(center);

candidates.forEach(System.out::println);

assertThat(candidates).isNotEmpty();
}

@Test
void 문제_시군구_코드를_직접_조회한다() {

VWorldSigunguResponse response =
vWorldLegalDongClient.getSigungu("41130");

System.out.println(response);

assertThat(response).isNotNull();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
package com.moive.MoiveBE.domain.recommendation.service;

import com.moive.MoiveBE.domain.recommendation.dto.VWorldLegalDong;
import org.junit.jupiter.api.Test;

import java.util.List;

import static org.assertj.core.api.Assertions.assertThat;

class VWorldLegalDongParserTest {

private final VWorldLegalDongParser parser =
new VWorldLegalDongParser();

@Test
void 법정동_코드의_앞_5자리로_시군구_코드를_생성한다() {

String xml = """
<?xml version="1.0" encoding="UTF-8"?>
<wfs:FeatureCollection
xmlns:wfs="http://www.opengis.net/wfs"
xmlns:gml="http://www.opengis.net/gml"
xmlns:sop="https://www.vworld.kr">

<gml:featureMember>
<sop:dt_d001_emd>
<sop:ld_emd_code>41135111</sop:ld_emd_code>
<sop:ld_emd_code_nm>금곡동</sop:ld_emd_code_nm>
<sop:src_signgu_code>41130</sop:src_signgu_code>

<sop:ag_geom>
<gml:MultiPolygon>
<gml:polygonMember>
<gml:Polygon>
<gml:outerBoundaryIs>
<gml:LinearRing>
<gml:coordinates>
127.077,37.346 127.117,37.346
127.117,37.368 127.077,37.368
127.077,37.346
</gml:coordinates>
</gml:LinearRing>
</gml:outerBoundaryIs>
</gml:Polygon>
</gml:polygonMember>
</gml:MultiPolygon>
</sop:ag_geom>
</sop:dt_d001_emd>
</gml:featureMember>

</wfs:FeatureCollection>
""";

List<VWorldLegalDong> result =
parser.parse(xml);

assertThat(result).hasSize(1);

VWorldLegalDong dong = result.get(0);

assertThat(dong.code()).isEqualTo("41135111");
assertThat(dong.name()).isEqualTo("금곡동");

assertThat(dong.signguCode()).isEqualTo("41135");
}
}
Loading