Skip to content

Commit

Permalink
feat: 최근 투표율 현황 최대 25개 쿼리하는 기능 구현 (#54)
Browse files Browse the repository at this point in the history
  • Loading branch information
LEEJaeHyeok97 authored Feb 3, 2025
1 parent 27adc16 commit 124dacb
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
import java.util.Optional;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
Expand Down Expand Up @@ -118,12 +117,22 @@ public Message registerVoteRate(CustomUserDetails userDetails, Long departmentId
.build();
}

public Page<GetRateResponse> getRate(Long departmentId, Pageable pageable) {
public List<GetRateResponse> getRate(Long departmentId) {

Governance governance = governanceRepository.findById(departmentId)
.orElseThrow(() -> new NullPointerException("해당 학과/단과대를 찾을 수 없습니다."));

Page<GetRateResponse> getRateResponses = voteRepository.findAllByGovernance(governance, pageable);
List<Vote> votes = voteRepository.findAllByGovernance(governance);

List<GetRateResponse> getRateResponses = votes.stream()
.map(
vote -> GetRateResponse.builder()
.voteRate(vote.getVoteRate())
.localDateTime(vote.getCreatedAt())
.voteCount(vote.getVoteCount())
.build()
)
.toList();

return getRateResponses;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,17 @@

import com.studentvote.domain.user.domain.Governance;
import com.studentvote.domain.vote.domain.Vote;
import com.studentvote.domain.vote.dto.response.GetRateResponse;
import java.util.List;
import java.util.Optional;
import org.springframework.data.domain.Page;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

public interface VoteRepository extends JpaRepository<Vote, Long>, VoteQueryDslRepository {
Optional<Vote> findByGovernance(Governance governance);

@Query("SELECT v FROM Vote v WHERE v.governance = :governance Order By v.createdAt DESC")
List<Vote> findAllByGovernance(@Param("governance") Governance governance);
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.studentvote.domain.vote.dto.request;


public record RegisterVoteRateRequest(
int voteCount,
double voteRate
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,15 @@

import com.querydsl.core.annotations.QueryProjection;
import java.time.LocalDateTime;
import lombok.Builder;

public record GetRateResponse(
LocalDateTime localDateTime,
int voteCount,
double voteRate
) {

@Builder
@QueryProjection
public GetRateResponse(LocalDateTime localDateTime, int voteCount, double voteRate) {
this.localDateTime = localDateTime;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import com.studentvote.global.payload.ResponseCustom;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import java.util.List;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
Expand Down Expand Up @@ -67,11 +68,10 @@ public ResponseCustom<Message> registerVoteRate(

@Operation(summary = "투표율 조회", description = "선거(단과대/학과) 별 투표율을 조회합니다.")
@GetMapping("/rate/{departmentId}")
public ResponseCustom<Page<GetRateResponse>> getRate(
@PathVariable Long departmentId,
@PageableDefault(size = 10, page = 0) Pageable pageable
public ResponseCustom<List<GetRateResponse>> getRate(
@PathVariable Long departmentId
) {
return ResponseCustom.OK(voteService.getRate(departmentId, pageable));
return ResponseCustom.OK(voteService.getRate(departmentId));
}

@Operation(summary = "개표 결과 등록", description = "각 단과대/학과 별로 개표 결과를 등록합니다.")
Expand Down

0 comments on commit 124dacb

Please sign in to comment.