Skip to content

Commit

Permalink
뉴스 목록 보기
Browse files Browse the repository at this point in the history
  • Loading branch information
bikooju committed Jan 11, 2025
1 parent 3068299 commit a6c5243
Show file tree
Hide file tree
Showing 7 changed files with 65 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,11 @@ public interface NewsRepository extends JpaRepository<News,Long> {
// 뉴스 작성자 목록 중복 제거 후 반환
@Query("SELECT DISTINCT n.member FROM News n WHERE n.member.teamGroup.groupKey = :groupKey")
List<Member> findDistinctMembersByGroupKey(@Param("groupKey") String groupKey);

// 특정 그룹의 속보 뉴스 조회
List<News> findByTeamGroupAndIsBreakingNewsTrue(TeamGroup teamGroup);

// 특정 그룹의 일반 뉴스 조회
List<News> findByTeamGroupAndIsBreakingNewsFalse(TeamGroup teamGroup);
}

37 changes: 37 additions & 0 deletions src/main/java/banban/springboot/service/NewsService.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Service
@RequiredArgsConstructor
@Transactional(readOnly = true)
Expand Down Expand Up @@ -87,4 +89,39 @@ public Void removeNews(String groupKey, Long memberId, Long newsId) {

return null;
}

/**
* 특정 그룹의 속보 뉴스 목록 조회
*/
public List<NewsResponseDTO.NewsReadResponseDTO> getBreakingNewsByGroupKey(String groupKey) {
//그룹 조회
TeamGroup teamGroup = groupRepository.findByGroupKey(groupKey)
.orElseThrow(() -> new RuntimeException("그룹키가 없습니다."));

//속보 뉴스 조회
List<News> breakingNewsList = newsRepository.findByTeamGroupAndIsBreakingNewsTrue(teamGroup);

// News -> NewReadResponseDTO 변환
return breakingNewsList.stream()
.map(NewsResponseDTO.NewsReadResponseDTO::from)
.toList();
}


/**
* 특정 그룹의 일반 뉴스 목록 조회
*/
public List<NewsResponseDTO.NewsReadResponseDTO> getRegularNewsByGroupKey(String groupKey) {
//그룹 조회
TeamGroup teamGroup = groupRepository.findByGroupKey(groupKey)
.orElseThrow(() -> new RuntimeException("그룹키가 없습니다."));

//일반 뉴스 조회
List<News> regularNewsList = newsRepository.findByTeamGroupAndIsBreakingNewsFalse(teamGroup);

// News -> NewReadResponseDTO 변환
return regularNewsList.stream()
.map(NewsResponseDTO.NewsReadResponseDTO::from)
.toList();
}
}
22 changes: 22 additions & 0 deletions src/main/java/banban/springboot/web/controller/NewsController.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@Tag(name = "뉴스")
@RestController
@RequiredArgsConstructor
Expand Down Expand Up @@ -77,4 +79,24 @@ public ApiResponse<Void> deleteNews(@PathVariable("groupKey") String groupKey, @
newsService.removeNews(groupKey, memberId, newsId);
return ApiResponse.onSuccess(null);
}

/**
* 특정 그룹의 속보 뉴스 목록 조회 API
*/
@GetMapping("/{groupKey}/breaking")
public ApiResponse<List<NewsResponseDTO.NewsReadResponseDTO>> getBreakingNewsByGroupKey(
@PathVariable("groupKey") String groupKey) {
List<NewsResponseDTO.NewsReadResponseDTO> breakingNews = newsService.getBreakingNewsByGroupKey(groupKey);
return ApiResponse.onSuccess(breakingNews);
}

/**
* 특정 그룹의 일반 뉴스 목록 조회 API
*/
@GetMapping("/{groupKey}/regular")
public ApiResponse<List<NewsResponseDTO.NewsReadResponseDTO>> getRegularNewsByGroupKey(
@PathVariable("groupKey") String groupKey) {
List<NewsResponseDTO.NewsReadResponseDTO> regularNews = newsService.getRegularNewsByGroupKey(groupKey);
return ApiResponse.onSuccess(regularNews);
}
}

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

0 comments on commit a6c5243

Please sign in to comment.