Skip to content

Commit 327a913

Browse files
authored
Merge pull request #75 from Leets-Official/feat/#72/멤버-리스트-반환-수정-및-멤버-상세-조회-추가
Feat #75 멤버 리스트 반환 수정 및 멤버 상세 조회 추가
2 parents 90bc02e + 96292f8 commit 327a913

File tree

6 files changed

+60
-7
lines changed

6 files changed

+60
-7
lines changed

src/main/java/leets/weeth/domain/user/application/dto/response/UserResponseDto.java

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,12 @@ public record Response(
3030
Role role
3131
) {
3232
}
33-
33+
public record SummaryResponse(
34+
Integer id,
35+
String name,
36+
List<Integer> cardinals,
37+
String department
38+
) {}
3439
public record AdminResponse(
3540
Integer id,
3641
String name,
@@ -50,5 +55,14 @@ public record AdminResponse(
5055
LocalDateTime modifiedAt
5156
) {
5257
}
53-
58+
public record UserResponse(
59+
Integer id,
60+
String name,
61+
String email,
62+
String studentId,
63+
String department,
64+
List<Integer> cardinals,
65+
Position position
66+
) {
67+
}
5468
}

src/main/java/leets/weeth/domain/user/application/mapper/UserMapper.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package leets.weeth.domain.user.application.mapper;
22

3+
import leets.weeth.domain.user.application.dto.response.UserResponseDto.SummaryResponse;
4+
import leets.weeth.domain.user.application.dto.response.UserResponseDto.UserResponse;
35
import leets.weeth.domain.user.domain.entity.User;
46
import leets.weeth.domain.user.domain.entity.enums.Department;
57
import org.mapstruct.*;
@@ -26,7 +28,15 @@ public interface UserMapper {
2628
// 수정: 출석률, 출석 횟수, 결석 횟수 매핑 추후 추가 예정
2729
})
2830
AdminResponse toAdminResponse(User user);
31+
@Mappings({
32+
@Mapping(target = "department", expression = "java( toString(user.getDepartment()) )")
33+
})
34+
SummaryResponse toSummaryResponse(User user);
2935

36+
@Mappings({
37+
// 상세 데이터 매핑
38+
})
39+
UserResponse toUserResponse(User user);
3040
default String toString(Department department) {
3141
return department.getValue();
3242
}

src/main/java/leets/weeth/domain/user/application/usecase/UserUseCase.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,12 @@ public interface UserUseCase {
1919

2020
Map<Integer, List<Response>> findAll();
2121

22+
Map<Integer, List<SummaryResponse>> findAllUser();
23+
2224
List<AdminResponse> findAllByAdmin();
2325

26+
UserResponse findUserDetails(Long userId);
27+
2428
void update(Update dto, Long userId);
2529

2630
void accept(Long userId);

src/main/java/leets/weeth/domain/user/application/usecase/UserUseCaseImpl.java

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,14 +106,30 @@ public Map<Integer, List<Response>> findAll() {
106106
.collect(Collectors.groupingBy(Map.Entry::getKey, // key = 기수, value = 유저 정보
107107
Collectors.mapping(Map.Entry::getValue, Collectors.toList())));
108108
}
109-
109+
@Override
110+
public Map<Integer, List<SummaryResponse>> findAllUser() {
111+
return userGetService.findAllByStatus(ACTIVE).stream()
112+
.map(user -> new AbstractMap.SimpleEntry<>(user.getCardinals(), mapper.toSummaryResponse(user)))
113+
.flatMap(entry -> Stream.concat(
114+
entry.getKey().stream().map(cardinal -> new AbstractMap.SimpleEntry<>(cardinal, entry.getValue())), // 기수별 Map
115+
Stream.of(new AbstractMap.SimpleEntry<>(0, entry.getValue())) // 모든 기수는 cardinal 0에 저장
116+
))
117+
.collect(Collectors.groupingBy(
118+
Map.Entry::getKey, // key = 기수
119+
Collectors.mapping(Map.Entry::getValue, Collectors.toList()) // value = 요약 정보 리스트
120+
));
121+
}
110122
@Override
111123
public List<AdminResponse> findAllByAdmin() {
112124
return userGetService.findAll().stream()
113125
.map(mapper::toAdminResponse)
114126
.toList();
115127
}
116-
128+
@Override
129+
public UserResponse findUserDetails(Long userId) {
130+
User user = userGetService.find(userId);
131+
return mapper.toUserResponse(user);
132+
}
117133
@Override
118134
public Response find(Long userId) {
119135
return mapper.to(userGetService.find(userId));

src/main/java/leets/weeth/domain/user/presentation/ResponseMessage.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
public enum ResponseMessage {
99
// UserAdminController 관련
1010
USER_FIND_ALL_SUCCESS("관리자가 모든 회원 정보를 성공적으로 조회했습니다."),
11+
USER_DETAILS_SUCCESS("특정 회원의 상세 정보를 성공적으로 조회했습니다."),
1112
USER_ACCEPT_SUCCESS("회원 가입 승인이 성공적으로 처리되었습니다."),
1213
USER_BAN_SUCCESS("회원이 성공적으로 차단되었습니다."),
1314
USER_ROLE_UPDATE_SUCCESS("회원의 역할이 성공적으로 수정되었습니다."),

src/main/java/leets/weeth/domain/user/presentation/UserController.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
import io.swagger.v3.oas.annotations.tags.Tag;
66
import jakarta.servlet.http.HttpServletRequest;
77
import jakarta.validation.Valid;
8+
import leets.weeth.domain.user.application.dto.response.UserResponseDto.SummaryResponse;
9+
import leets.weeth.domain.user.application.dto.response.UserResponseDto.UserResponse;
810
import leets.weeth.domain.user.application.usecase.UserManageUseCase;
911
import leets.weeth.domain.user.application.usecase.UserUseCase;
1012
import leets.weeth.domain.user.domain.service.UserGetService;
@@ -58,10 +60,16 @@ public CommonResponse<Boolean> checkEmail(@RequestParam String email) {
5860

5961
@GetMapping("/all")
6062
@Operation(summary="동아리 멤버 전체 조회(전체/기수별)")
61-
public CommonResponse<Map<Integer, List<Response>>> findAll() {
62-
return CommonResponse.createSuccess(USER_FIND_ALL_SUCCESS.getMessage(), userUseCase.findAll());
63+
public CommonResponse<Map<Integer, List<SummaryResponse>>> findAllUser() {
64+
return CommonResponse.createSuccess(USER_FIND_ALL_SUCCESS.getMessage(), userUseCase.findAllUser());
65+
}
66+
@GetMapping("/details")
67+
@Operation(summary = "특정 멤버 상세 조회")
68+
public CommonResponse<UserResponse> findUser(@RequestParam Long userId) {
69+
return CommonResponse.createSuccess(
70+
USER_DETAILS_SUCCESS.getMessage(), userUseCase.findUserDetails(userId)
71+
);
6372
}
64-
6573
@GetMapping
6674
@Operation(summary="내 정보 조회")
6775
public CommonResponse<Response> find(@Parameter(hidden = true) @CurrentUser Long userId) {

0 commit comments

Comments
 (0)