From 68ec41f7983e79fc5714a58bbb065c0cb019069e Mon Sep 17 00:00:00 2001 From: wjkim9 Date: Tue, 22 Jul 2025 17:13:04 +0900 Subject: [PATCH 1/2] =?UTF-8?q?=E2=9C=A8[=EA=B8=B0=EB=8A=A5=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80]=20:=20=EB=B0=B0=EB=8B=AC=20=EA=B8=B0=EC=82=AC?= =?UTF-8?q?=EC=97=90=20URL=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 카카오톡으로 기사 배달 시 URL 추가하여 전달 --- .../News_Deliver/Domain/Kakao/service/KakaoMessageService.java | 1 + docker-compose.yml | 1 + 2 files changed, 2 insertions(+) diff --git a/SpringBoot/src/main/java/Baemin/News_Deliver/Domain/Kakao/service/KakaoMessageService.java b/SpringBoot/src/main/java/Baemin/News_Deliver/Domain/Kakao/service/KakaoMessageService.java index 0e4a476..4cbbc55 100644 --- a/SpringBoot/src/main/java/Baemin/News_Deliver/Domain/Kakao/service/KakaoMessageService.java +++ b/SpringBoot/src/main/java/Baemin/News_Deliver/Domain/Kakao/service/KakaoMessageService.java @@ -194,6 +194,7 @@ private static Map createTemplateData(List newsL NewsEsDocument news = newsList.get(i); templateArgs.put("SUMMARY" + (i + 1), news.getSummary()); templateArgs.put("PUBLISHER" + (i + 1), news.getPublisher()); + templateArgs.put("CONTENTURL" + (i + 1), news.getContent_url()); } return templateArgs; diff --git a/docker-compose.yml b/docker-compose.yml index a4a560c..92c8a8a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -128,6 +128,7 @@ services: volumes: - ./ElasticSearch/stopwords.txt:/usr/share/elasticsearch/config/stopwords.txt - es-data:/usr/share/elasticsearch/data + - ./ElasticSearch/plugins:/usr/share/elasticsearch/plugins - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro From c7bdad0843da8de4789c493df0ce99d667544bb5 Mon Sep 17 00:00:00 2001 From: wjkim9 Date: Fri, 25 Jul 2025 02:16:13 +0900 Subject: [PATCH 2/2] =?UTF-8?q?=F0=9F=9A=91=EF=B8=8F=20[=EB=B0=B0=ED=8F=AC?= =?UTF-8?q?=20=ED=9B=84=20=EA=B8=B4=EA=B8=89=20=EC=88=98=EC=A0=95]=20:=20D?= =?UTF-8?q?B=20=EC=8B=9C=EA=B0=84=EB=8C=80=20=EC=84=A4=EC=A0=95=20?= =?UTF-8?q?=EC=9D=B4=EC=8A=88=EB=A1=9C=20=EC=84=9C=EB=B2=84=20=EC=B8=A1?= =?UTF-8?q?=EC=97=90=EC=84=9C=20=EC=9E=84=EC=8B=9C=EC=A1=B0=EC=B9=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit DB 시간대 차이 문제로 CURDATE가 맞지 않아 임시로 서버 측에서 처리하여 변수로 넘김 --- .../ElasticSearch/service/NewsEsService.java | 50 +++++++++++++------ 1 file changed, 35 insertions(+), 15 deletions(-) diff --git a/SpringBoot/src/main/java/Baemin/News_Deliver/Global/News/ElasticSearch/service/NewsEsService.java b/SpringBoot/src/main/java/Baemin/News_Deliver/Global/News/ElasticSearch/service/NewsEsService.java index c46daf3..4d232e3 100644 --- a/SpringBoot/src/main/java/Baemin/News_Deliver/Global/News/ElasticSearch/service/NewsEsService.java +++ b/SpringBoot/src/main/java/Baemin/News_Deliver/Global/News/ElasticSearch/service/NewsEsService.java @@ -16,7 +16,10 @@ import org.springframework.stereotype.Service; import java.io.IOException; +import java.sql.Timestamp; import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.ZoneId; import java.util.List; import java.util.Objects; @@ -93,23 +96,40 @@ public void esBulkService() throws IOException { * @return 해당 섹션의 뉴스 DTO 리스트 */ private List loadNewsFromDB(String section) { + // 현재 시간 기준으로 어제의 시작과 끝을 계산 + LocalDate today = LocalDate.now(ZoneId.of("Asia/Seoul")); + LocalDateTime startOfYesterday = today.minusDays(1).atStartOfDay(); + LocalDateTime endOfYesterday = today.atStartOfDay(); + //FIXME : AWS RDS와 시간대 차이로 임시로 서버측에서 시간대를 조절하였음. 설정 문제로 인한 수정이니 해결되면 수정할 것. String sql = """ - SELECT * - FROM news - WHERE published_at >= CURDATE() - INTERVAL 1 DAY - AND published_at < CURDATE() - AND sections = ? - """; + SELECT * + FROM news + WHERE published_at >= ? + AND published_at < ? + AND sections = ? + """; - return jdbcTemplate.query(sql, new Object[]{section}, (rs, rowNum) -> new NewsItemDTO( - String.valueOf(rs.getLong("id")), - List.of(rs.getString("sections")), - rs.getString("title"), - rs.getString("publisher"), - rs.getString("summary"), - rs.getString("content_url"), - rs.getTimestamp("published_at").toLocalDateTime() - )); +// String sql = """ +// SELECT * +// FROM news +// WHERE published_at >= CURDATE() - INTERVAL 1 DAY +// AND published_at < CURDATE() +// AND sections = ? +// """; + + return jdbcTemplate.query( + sql, + new Object[]{Timestamp.valueOf(startOfYesterday), Timestamp.valueOf(endOfYesterday), section}, + (rs, rowNum) -> new NewsItemDTO( + String.valueOf(rs.getLong("id")), + List.of(rs.getString("sections")), + rs.getString("title"), + rs.getString("publisher"), + rs.getString("summary"), + rs.getString("content_url"), + rs.getTimestamp("published_at").toLocalDateTime() + ) + ); } /**