Skip to content

Commit 1d9dfc6

Browse files
committed
그룹 상세 조회 api
1 parent 44be651 commit 1d9dfc6

File tree

3 files changed

+59
-0
lines changed

3 files changed

+59
-0
lines changed

polling-app-server/src/main/java/com/example/polls/controller/GroupController.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.example.polls.model.User;
44
import com.example.polls.payload.Request.CreateGroupRequest;
55
import com.example.polls.payload.Request.JoinGroupRequest;
6+
import com.example.polls.payload.Response.GroupDetailResponse;
67
import com.example.polls.payload.Response.GroupSummaryResponse;
78
import com.example.polls.repository.UserRepository;
89
import com.example.polls.security.UserPrincipal;
@@ -49,4 +50,19 @@ public ResponseEntity<String> joinGroup(@RequestBody JoinGroupRequest request, @
4950
return ResponseEntity.ok("그룹에 성공적으로 참여했습니다.");
5051
}
5152

53+
//그룹 상세조회
54+
@GetMapping("/{groupId}")
55+
public ResponseEntity<GroupDetailResponse> getGroupDetail(@PathVariable Long groupId,
56+
@AuthenticationPrincipal UserPrincipal userPrincipal) {
57+
GroupDetailResponse response = groupService.getGroupDetail(groupId,userPrincipal.getId());
58+
return ResponseEntity.ok(response);
59+
}
60+
61+
@GetMapping("{groupId}/members")
62+
public ResponseEntity<List<GroupDetailResponse.MemberSummary>> getGroupMembers(@PathVariable Long groupId,
63+
@AuthenticationPrincipal UserPrincipal userPrincipal) {
64+
GroupDetailResponse response = groupService.getGroupDetail(groupId, userPrincipal.getId());
65+
return ResponseEntity.ok(response.getMembers());
66+
}
67+
5268
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package com.example.polls.payload.Response;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Builder;
5+
import lombok.Getter;
6+
7+
import java.util.List;
8+
9+
@Getter
10+
@Builder
11+
@AllArgsConstructor
12+
public class GroupDetailResponse {
13+
private Long id;
14+
private String name;
15+
private String imageUrl;
16+
private List<MemberSummary> members;
17+
18+
@Getter
19+
@Builder
20+
@AllArgsConstructor
21+
public static class MemberSummary {
22+
private Long id;
23+
private String username;
24+
private String email;
25+
}
26+
}

polling-app-server/src/main/java/com/example/polls/service/GroupService.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import com.example.polls.model.GroupRole;
99
import com.example.polls.model.User;
1010
import com.example.polls.payload.Request.CreateGroupRequest;
11+
import com.example.polls.payload.Response.GroupDetailResponse;
1112
import com.example.polls.payload.Response.GroupSummaryResponse;
1213
import com.example.polls.repository.GroupMemberRepository;
1314
import com.example.polls.repository.GroupRepository;
@@ -107,4 +108,20 @@ public void joinCode(Long userId, String joinCode) {
107108
groupMemberRepository.save(newMember);
108109

109110
}
111+
112+
public GroupDetailResponse getGroupDetail(Long groupId, Long userId) {
113+
Group group = groupRepository.findById(groupId)
114+
.orElseThrow(()-> new ResourceNotFoundException("Group", "id", groupId));
115+
116+
List<GroupDetailResponse.MemberSummary> members = group.getMembers().stream()
117+
.map(member-> new GroupDetailResponse.MemberSummary(
118+
member.getUser().getId(),
119+
member.getUser().getUsername(),
120+
member.getUser().getEmail()
121+
))
122+
.collect(Collectors.toList());
123+
124+
return new GroupDetailResponse(group.getId(),group.getName(),group.getImageUrl(),members);
125+
126+
}
110127
}

0 commit comments

Comments
 (0)