[ 작업한 내용 ]
1. domain/user/enums 생성
- UserSearchType.java (USERNAME, EMAIL).
- 타입관리를 용이하게 하기 위해 타입인 USERNAME, EMAIL을 enum으로 관리.
2. message.properties 메시지 추가
- 관리자 요구사항 중 사용자 타입별 검색 조회시 발생하는 성공, 실패 메시지 관리.
success.user.search=사용자 조회가 완료되었습니다.
error.user.search.type=유효하지 않은 검색 타입입니다.
3. UserSuccessCode 상태코드 추가
- 사용자 타입별 검색 조회에 성공했을 때 처리할 상태코드 작성.
USER_SEARCH(HttpStatus.OK, "USER_204", "success.user.search");
4. UserErrorCode 상태코드 추가
- 사용자 타입별 검색 조회에 실패했을 때 처리할 상태코드 작성.
USER_SEARCH_TYPE_FAILED(HttpStatus.BAD_REQUEST, "USER_006", "error.user.search.type");
5. UserService
- 회원 검색은 타입별 조회를 하고 결과는 페이징으로 처리한다.
- controller에서 전달받은 type, keyword, page, size 매개변수를 토대로 비즈니스 로직 처리.
- switch문을 사용하여 type별 조건 실행 (findByUsernameContainingIgnoreCase , findByEmailContainingIgnoreCase )
switch (type) {
case USERNAME:
result = userRepository.findByUsernameContainingIgnoreCase(keyword, pageable);
break;
case EMAIL:
result = userRepository.findByEmailContainingIgnoreCase(keyword, pageable);
break;
default:
throw new IllegalArgumentException("Unexpected search type: " + type);
}
6. UserRepository
- username, email 각각 검색하는 메서드 생성 (JPA)
// 관리자 - 회원 username 검색 (+페이징)
Page<User> findByUsernameContainingIgnoreCase(String username, Pageable pageable);
// 관리자 - 회원 email 검색 (+페이징)
Page<User> findByEmailContainingIgnoreCase(String email, Pageable pageable);
7. UserSearchResDTO
- 검색 응답용 DTO 생성.
@Getter
public class UserSearchResDTO {
private long id;
private String username;
private String email;
private Role role;
private LocalDateTime joinDate;
private LocalDateTime lastLoginDate;
private UserStatus status;
public UserSearchResDTO(User user) {
this.id = user.getId();
this.username = user.getUsername();
this.email = user.getEmail();
this.role = user.getRole();
this.joinDate = user.getJoinDate();
this.lastLoginDate = user.getLastLoginDate();
this.status = user.getStatus();
}
}
'개발 기록 > 도서관 관리 시스템' 카테고리의 다른 글
[Library Management System] 25.08.29 (31일) (0) | 2025.08.29 |
---|---|
[Library Management System] 25.08.28 (30일) (0) | 2025.08.28 |
[Library Management System] 25.08.25 (28일) (0) | 2025.08.25 |
[Library Management System] 25.08.24 (27일) (0) | 2025.08.24 |
[Library Management System] 25.08.20 (26일) (0) | 2025.08.20 |