게시글 목록 페이지에 필요한 게시글 데이터 리스트 반환
☃️ Controller
@RestController
@RequiredArgsConstructor
@Slf4j
@RequestMapping("/volunteers")
public class VolunteerController {
private final VolunteerService volunteerService;
// 봉사활동 구인글 전체 조회
@GetMapping()
public ResponseEntity<List<VolunteerResponse>> getAllVolunteers(@RequestParam(value = "userId", required = false, defaultValue = "0") Long userId) {
List<VolunteerResponse> responses = volunteerService.getAllVolunteers(userId);
return ResponseEntity.status(HttpStatus.OK).body(responses);
}
}
· RequestParam 으로 userId 받아서 해당 사용자 정보 조회하기
☃️ Service
@Service
@RequiredArgsConstructor
@Slf4j
@Transactional
public class VolunteerService {
private final VolunteerRepository volunteerRepository;
private final ImageService imageService;
private final LikeService likeService;
// 봉사활동 구인글 전체 조회
public List<VolunteerResponse> getAllVolunteers(Long userId) {
List<Volunteer> volunteers = volunteerRepository.findAll();
return volunteers.stream()
.map(m -> VolunteerResponse.builder()
.userNickname(m.getUser().getNickname())
.userImage(m.getUser().getProfileImage())
.volunteerId(m.getId())
.createdDate(m.getCreatedDate().toLocalDate())
.title(m.getTitle())
.content(m.getContent())
.image(imageService.processImage(m.getImage()))
.place(m.getPlace())
.likeCount(m.getLikeCount())
.userLiked(likeService.checkIfUserLikedVolunteer(userId, m.getId()))
.build())
.collect(Collectors.toList());
}
}
· 반환할 데이터를 담은 DTO build 하기
☃️ Repository
public interface VolunteerRepository extends JpaRepository<Volunteer, Long> {}
💡 JpaRespository 를 상속받으면 @Repository 어노테이션을 생략해도 된다!
☃️ Dto
@Getter
@Builder
public class VolunteerResponse {
private Long volunteerId;
private String userNickname;
private String userImage;
private String title;
private String content;
private String image;
private String place;
private LocalDate createdDate;
private int likeCount;
private Boolean userLiked;
private List<CommentResponse> comments;
}
· comments 는 상세 조회 시 반환할 댓글 리스트
'Spring > [P] 눈치우기 봉사활동 매칭 플랫폼' 카테고리의 다른 글
최신 게시글 3개 조회하기 (0) | 2024.02.14 |
---|---|
게시글 상세 조회하기 (0) | 2024.02.13 |
[Git/Github] Issue - Branch - PR 만들기 (0) | 2024.01.22 |
[Git/Github] Github Repository 랑 IntelliJ 연동하기 : SSH Key (0) | 2024.01.18 |
ERD 설계 & API 명세서 (0) | 2024.01.11 |