Skip to content

Commit f89b23a

Browse files
committed
feat[poll]:통계로직추가
1 parent 0fd0b41 commit f89b23a

File tree

5 files changed

+76
-21
lines changed

5 files changed

+76
-21
lines changed

backend/src/main/java/com/ai/lawyer/domain/poll/service/PollService.java

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,21 +13,30 @@
1313
import java.util.List;
1414

1515
public interface PollService {
16+
// ===== 조회 관련 =====
1617
PollDto getPoll(Long pollId);
18+
PollDto getPollWithStatistics(Long pollId);
1719
List<PollOptions> getPollOptions(Long pollId);
18-
PollVoteDto vote(Long pollId, Long pollItemsId, Long memberId);
19-
PollStaticsResponseDto getPollStatics(Long pollId);
20-
void closePoll(Long pollId);
21-
void deletePoll(Long pollId);
20+
List<PollDto> getPollsByStatus(PollDto.PollStatus status);
2221
PollDto getTopPollByStatus(PollDto.PollStatus status);
22+
List<PollDto> getTopNPollsByStatus(PollDto.PollStatus status, int n);
23+
24+
// ===== 통계 관련 =====
25+
PollStaticsResponseDto getPollStatics(Long pollId);
2326
Long getVoteCountByPollId(Long pollId);
2427
Long getVoteCountByPostId(Long postId);
25-
PollDto updatePoll(Long pollId, PollUpdateDto pollUpdateDto);
26-
PollDto getPollWithStatistics(Long pollId);
28+
29+
// ===== 투표 관련 =====
30+
PollVoteDto vote(Long pollId, Long pollItemsId, Long memberId);
31+
32+
// ===== 생성/수정/삭제 관련 =====
2733
PollDto createPoll(PollCreateDto request, Long memberId);
34+
PollDto updatePoll(Long pollId, PollUpdateDto pollUpdateDto);
2835
void patchUpdatePoll(Long pollId, PollUpdateDto pollUpdateDto);
29-
List<PollDto> getPollsByStatus(PollDto.PollStatus status);
30-
List<PollDto> getTopNPollsByStatus(PollDto.PollStatus status, int n);
36+
void closePoll(Long pollId);
37+
void deletePoll(Long pollId);
38+
39+
// ===== 검증 관련 =====
3140
void validatePollCreate(PollCreateDto dto);
3241
void validatePollCreate(PollForPostDto dto);
3342
}

backend/src/main/java/com/ai/lawyer/domain/post/controller/PostController.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import com.ai.lawyer.domain.post.dto.PostUpdateDto;
77
import com.ai.lawyer.domain.post.dto.PostWithPollCreateDto;
88
import com.ai.lawyer.domain.post.service.PostService;
9+
import com.ai.lawyer.domain.post.dto.PostSimpleDto;
910
import com.ai.lawyer.domain.member.entity.Member;
1011
import com.ai.lawyer.domain.member.repositories.MemberRepository;
1112
import com.ai.lawyer.global.jwt.TokenProvider;
@@ -70,6 +71,13 @@ public ResponseEntity<ApiResponse<List<PostDetailDto>>> getAllPosts() {
7071
return ResponseEntity.ok(new ApiResponse<>(200, "게시글 전체 조회 성공", posts));
7172
}
7273

74+
@Operation(summary = "게시글 간편 전체 조회")
75+
@GetMapping("/simple")
76+
public ResponseEntity<ApiResponse<List<PostSimpleDto>>> getAllSimplePosts() {
77+
List<PostSimpleDto> posts = postService.getAllSimplePosts();
78+
return ResponseEntity.ok(new ApiResponse<>(200, "게시글 간편 전체 조회 성공", posts));
79+
}
80+
7381
@Operation(summary = "게시글 단일 조회")
7482
@GetMapping("/{postId}")
7583
public ResponseEntity<ApiResponse<PostDetailDto>> getPostById(@PathVariable Long postId) {
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.ai.lawyer.domain.post.dto;
2+
3+
import lombok.Builder;
4+
import lombok.Data;
5+
6+
@Data
7+
@Builder
8+
public class PostSimpleDto {
9+
private Long postId;
10+
private Long memberId;
11+
private PollInfo poll;
12+
13+
@Data
14+
@Builder
15+
public static class PollInfo {
16+
private Long pollId;
17+
private String pollStatus;
18+
}
19+
}
20+

backend/src/main/java/com/ai/lawyer/domain/post/service/PostService.java

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,30 +6,26 @@
66
import com.ai.lawyer.domain.post.dto.PostRequestDto;
77
import com.ai.lawyer.domain.post.dto.PostUpdateDto;
88
import com.ai.lawyer.domain.post.dto.PostWithPollCreateDto;
9+
import com.ai.lawyer.domain.post.dto.PostSimpleDto;
910

1011
import java.util.List;
1112

1213
public interface PostService {
13-
14-
PostDto createPost(PostRequestDto postRequestDto, Long memberId);
15-
14+
// ===== 조회 관련 =====
1615
PostDetailDto getPostById(Long postId);
17-
1816
PostDetailDto getPostDetailById(Long postId);
19-
17+
List<PostDetailDto> getAllPosts();
18+
List<PostSimpleDto> getAllSimplePosts();
2019
List<PostDto> getPostsByMemberId(Long memberId);
2120

21+
// ===== 생성/수정/삭제 관련 =====
22+
PostDto createPost(PostRequestDto postRequestDto, Long memberId);
2223
PostDto updatePost(Long postId, PostUpdateDto postUpdateDto);
23-
24+
void patchUpdatePost(Long postId, PostUpdateDto postUpdateDto);
2425
void deletePost(Long postId);
26+
PostDetailDto createPostWithPoll(PostWithPollCreateDto dto, Long memberId);
2527

26-
List<PostDetailDto> getAllPosts();
27-
28+
// ===== 본인 게시글 관련 =====
2829
PostDto getMyPostById(Long postId, Long requesterMemberId);
29-
3030
List<PostDto> getMyPosts(Long requesterMemberId);
31-
32-
void patchUpdatePost(Long postId, PostUpdateDto postUpdateDto);
33-
34-
PostDetailDto createPostWithPoll(PostWithPollCreateDto dto, Long memberId);
3531
}

backend/src/main/java/com/ai/lawyer/domain/post/service/PostServiceImpl.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import com.ai.lawyer.domain.post.dto.PostRequestDto;
88
import com.ai.lawyer.domain.post.dto.PostUpdateDto;
99
import com.ai.lawyer.domain.post.dto.PostWithPollCreateDto;
10+
import com.ai.lawyer.domain.post.dto.PostSimpleDto;
1011
import com.ai.lawyer.domain.post.entity.Post;
1112
import com.ai.lawyer.domain.post.repository.PostRepository;
1213
import com.ai.lawyer.domain.poll.repository.PollRepository;
@@ -225,6 +226,27 @@ public PostDetailDto createPostWithPoll(PostWithPollCreateDto dto, Long memberId
225226
return getPostDetailById(savedPost.getPostId());
226227
}
227228

229+
@Override
230+
public List<PostSimpleDto> getAllSimplePosts() {
231+
List<Post> posts = postRepository.findAll();
232+
return posts.stream()
233+
.map(post -> {
234+
PostSimpleDto.PollInfo pollInfo = null;
235+
if (post.getPoll() != null) {
236+
pollInfo = PostSimpleDto.PollInfo.builder()
237+
.pollId(post.getPoll().getPollId())
238+
.pollStatus(post.getPoll().getStatus().name())
239+
.build();
240+
}
241+
return PostSimpleDto.builder()
242+
.postId(post.getPostId())
243+
.memberId(post.getMember().getMemberId())
244+
.poll(pollInfo)
245+
.build();
246+
})
247+
.collect(Collectors.toList());
248+
}
249+
228250
private PostDto convertToDto(Post entity) {
229251
Long memberId = null;
230252
if (entity.getMember() != null) {

0 commit comments

Comments
 (0)