diff --git a/src/main/java/banban/springboot/service/NewsService.java b/src/main/java/banban/springboot/service/NewsService.java index 7425f26..a15962d 100644 --- a/src/main/java/banban/springboot/service/NewsService.java +++ b/src/main/java/banban/springboot/service/NewsService.java @@ -212,4 +212,28 @@ public void deleteOldNews() { LocalDateTime yesterdayAt6PM = now.minusDays(1).withHour(17).withMinute(59).withSecond(59); newsRepository.deleteByCreatedAtBetween(twoYesterdayAt6PM, yesterdayAt6PM); } + + /*** + * 어제 18시부터 작성한 글에서 오늘 18시전까지 작성한 글 목록 조회 + */ + public List getNewsBetweenYesterday18ToToday18(String groupKey) { + // 그룹 확인 + TeamGroup teamGroup = groupRepository.findByGroupKey(groupKey) + .orElseThrow(() -> new GeneralException(ErrorStatus.TEAMGROUP_NOT_FOUND)); + + // 현재 시간 + LocalDateTime now = getCurrentTime(); + + // 어제 18시부터 오늘 18시전까지 + LocalDateTime yesterdayAt6PM = now.minusDays(1).withHour(18).withMinute(0).withSecond(0); + LocalDateTime todayAt6PM = now.withHour(17).withMinute(59).withSecond(59); + + // 뉴스 조회 + List newsList = newsRepository.findByTeamGroupAndCreatedAtBetween(teamGroup, yesterdayAt6PM, todayAt6PM); + + // 뉴스 -> DTO 변환 + return newsList.stream() + .map(NewsResponseDTO.NewsReadResponseDTO::from) + .toList(); + } } diff --git a/src/main/java/banban/springboot/web/controller/NewsController.java b/src/main/java/banban/springboot/web/controller/NewsController.java index feb6ec3..2dcd6b5 100644 --- a/src/main/java/banban/springboot/web/controller/NewsController.java +++ b/src/main/java/banban/springboot/web/controller/NewsController.java @@ -130,4 +130,15 @@ public ApiResponse> getYesterdayN List yesterdayNews = newsService.getYesterdayNews(groupKey, memberId); return ApiResponse.onSuccess(yesterdayNews); } + + @GetMapping("/{groupKey}/news/yesterday-today") + @Operation(summary = "어제 18시부터 오늘 18시 전까지 뉴스 조회") + @Parameters({ + @Parameter(name = "groupKey", description = "그룹 키") + }) + public ApiResponse> getNewsBetweenYesterday18ToToday18( + @PathVariable String groupKey) { + List newsList = newsService.getNewsBetweenYesterday18ToToday18(groupKey); + return ApiResponse.onSuccess(newsList); + } } diff --git a/src/main/java/banban/springboot/web/dto/response/NewsResponseDTO.java b/src/main/java/banban/springboot/web/dto/response/NewsResponseDTO.java index 05f06b9..86dbf60 100644 --- a/src/main/java/banban/springboot/web/dto/response/NewsResponseDTO.java +++ b/src/main/java/banban/springboot/web/dto/response/NewsResponseDTO.java @@ -1,6 +1,7 @@ package banban.springboot.web.dto.response; import banban.springboot.domain.entity.News; +import banban.springboot.domain.enums.NewsCategories; import lombok.*; import org.springframework.web.multipart.MultipartFile; @@ -20,8 +21,8 @@ public static class NewsCreateResponseDTO { private String headline; private String content; private String images; - private boolean isBreakingNews; private LocalDateTime createdAt; + private boolean isBreakingNews; public static NewsCreateResponseDTO from(News news) { return NewsCreateResponseDTO.builder() @@ -46,6 +47,7 @@ public static class NewsReadResponseDTO { private String content; private String username; private boolean isBreakingNews; + private NewsCategories newsCategories; private String images; public static NewsReadResponseDTO from(News news) { @@ -56,6 +58,7 @@ public static NewsReadResponseDTO from(News news) { .username(news.getMember().getUsername()) .isBreakingNews(news.isBreakingNews()) .images(news.getThumbnail_URL()) + .newsCategories(news.getNewsCategories()) .build(); } }