Skip to content

Commit 4d5373e

Browse files
authored
Merge pull request #38 from Block-Guard/feat/#33/news-api
[Refactor] 공공데이터 호출 방식 변경
2 parents 9703ca2 + d77573f commit 4d5373e

File tree

1 file changed

+20
-15
lines changed

1 file changed

+20
-15
lines changed

src/main/java/com/blockguard/server/infra/importer/FraudUrlImporter.java

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import java.nio.charset.StandardCharsets;
1919
import java.time.LocalDate;
2020
import java.time.LocalDateTime;
21+
import java.util.ArrayList;
2122
import java.util.List;
2223
import java.util.Map;
2324

@@ -26,7 +27,7 @@
2627
@RequiredArgsConstructor
2728
public class FraudUrlImporter {
2829

29-
private static final int PER_PAGE = 50;
30+
private static final int PER_PAGE = 300;
3031
private static final int MAX_PAGE = 1000;
3132
private static final int DELAY_BETWEEN_REQUESTS_MS = 200;
3233

@@ -47,20 +48,18 @@ public class FraudUrlImporter {
4748
@Transactional
4849
public void syncFraudUrlsFromOpenApi() {
4950

50-
log.info("2024 버전 사기 URL 동기화 시작");
51-
importFrom(apiUrl);
52-
53-
/* log.info("2023 버전 사기 URL 동기화 시작");
54-
importFrom(apiUrlOld);*/
51+
/* log.info("2024 버전 사기 URL 동기화 시작");
52+
importFrom(apiUrl);*/
5553

54+
log.info("2023 버전 사기 URL 동기화 시작");
55+
importFrom(apiUrlOld);
5656
}
5757

5858
private void importFrom(String baseUrl) {
5959
int page = 1;
6060
boolean hasNext = true;
6161

6262
while (hasNext && page <= MAX_PAGE) {
63-
6463
String encodedKey = URLEncoder.encode(serviceKey, StandardCharsets.UTF_8);
6564
String fullUrl = String.format("%s?page=%d&perPage=%d&serviceKey=%s",
6665
baseUrl, page, PER_PAGE, encodedKey);
@@ -76,21 +75,26 @@ private void importFrom(String baseUrl) {
7675
if (data == null || data.isEmpty()) {
7776
hasNext = false;
7877
} else {
78+
List<FraudUrl> fraudUrlsToSave = new ArrayList<>();
79+
7980
for (Map<String, Object> item : data) {
8081
String detectedDateStr = (String) item.get("날짜");
8182
String urlStr = (String) item.get("홈페이지주소");
8283

8384
if (urlStr == null || detectedDateStr == null) continue;
85+
if (fraudUrlRepository.existsByUrl(urlStr)) continue;
8486

85-
if (!fraudUrlRepository.existsByUrl(urlStr)) {
86-
LocalDate detectedDate = LocalDate.parse(detectedDateStr);
87-
fraudUrlRepository.save(FraudUrl.builder()
88-
.url(urlStr)
89-
.detectedDate(detectedDate)
90-
.lastCheckedAt(LocalDateTime.now())
91-
.build());
92-
}
87+
LocalDate detectedDate = LocalDate.parse(detectedDateStr);
88+
FraudUrl fraudUrl = FraudUrl.builder()
89+
.url(urlStr)
90+
.detectedDate(detectedDate)
91+
.lastCheckedAt(LocalDateTime.now())
92+
.build();
93+
94+
fraudUrlsToSave.add(fraudUrl);
9395
}
96+
97+
fraudUrlRepository.saveAll(fraudUrlsToSave);
9498
page++;
9599
}
96100

@@ -106,5 +110,6 @@ private void importFrom(String baseUrl) {
106110
throw new BusinessExceptionHandler(ErrorCode.FAIL_IMPORT_OPEN_API);
107111
}
108112
}
113+
log.info("전체 저장 완료");
109114
}
110115
}

0 commit comments

Comments
 (0)