diff --git a/src/main/java/doit/apihw/api/controller/MemberController.java b/src/main/java/doit/apihw/api/controller/MemberController.java index d1e5890..343c5bb 100644 --- a/src/main/java/doit/apihw/api/controller/MemberController.java +++ b/src/main/java/doit/apihw/api/controller/MemberController.java @@ -3,6 +3,8 @@ import doit.apihw.api.controller.dto.AuthPasswordChangeRequest; import doit.apihw.api.controller.dto.MemberResponse; import doit.apihw.api.service.MemberService; + +import java.time.LocalDate; import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.GetMapping; @@ -51,5 +53,11 @@ public void changePassword(@PathVariable Long memberId, @RequestBody AuthPasswor } // TODO : 자유 주제로 API를 추가로 구현해보세요. - + /** + * 회원 중 특정 날짜 이전에 태어난 회원 정보를 조회한다. + */ + @GetMapping("/members/birthday") + public List searchMembersByBirthday(@RequestParam LocalDate date) { + return memberService.searchMembersWithBirthday(date); + } } diff --git a/src/main/java/doit/apihw/api/service/AuthService.java b/src/main/java/doit/apihw/api/service/AuthService.java index ca3dd9d..93ebe07 100644 --- a/src/main/java/doit/apihw/api/service/AuthService.java +++ b/src/main/java/doit/apihw/api/service/AuthService.java @@ -1,9 +1,6 @@ package doit.apihw.api.service; -import doit.apihw.api.controller.dto.AuthLoginRequest; -import doit.apihw.api.controller.dto.AuthLoginResponse; -import doit.apihw.api.controller.dto.AuthPasswordChangeRequest; -import doit.apihw.api.controller.dto.AuthSignUpRequest; +import doit.apihw.api.controller.dto.*; import doit.apihw.domain.member.Member; import doit.apihw.domain.member.MemberRepository; import lombok.RequiredArgsConstructor; @@ -52,12 +49,15 @@ public AuthLoginResponse signUp(AuthSignUpRequest request) { // TODO : 로그인을 진행한다. public AuthLoginResponse login(AuthLoginRequest request) { // DB에서 memberLoginId와 memberPassword를 조회하여 일치하는 회원이 있는지 확인한다. + Member member = memberRepository.findByMemberLoginIdAndMemberPassword( + request.getMemberLoginId(), request.getMemberPassword()); // 만약 일치하는 회원이 없다면, IllegalArgumentException을 발생시킨다. + if (member == null) { + throw new IllegalArgumentException("일치하는 회원이 없습니다."); + } // 일치하는 회원이 있다면, MemberResponse로 변환하여 반환한다. - return null; + return AuthLoginResponse.from(member); } - - } diff --git a/src/main/java/doit/apihw/api/service/MemberService.java b/src/main/java/doit/apihw/api/service/MemberService.java index dc31790..2123a7f 100644 --- a/src/main/java/doit/apihw/api/service/MemberService.java +++ b/src/main/java/doit/apihw/api/service/MemberService.java @@ -31,26 +31,46 @@ public MemberResponse findOneMember(Long memberId) { // TODO : 전체 회원 정보를 조회한다. public List findAllMembers() { // DB에서 전체 회원 정보를 조회한다. + List members = memberRepository.findAll(); // 조회된 회원 정보를 List로 변환하여 반환한다. - return null; + return members.stream() + .map(MemberResponse::from) + .toList(); } // TODO : 회원 이름으로 회원 정보를 조회한다. public List searchMembersWithName(String memberName) { // DB에서 memberName에 해당하는 회원 정보를 조회한다. + List members = memberRepository.findByMemberName(memberName); // 조회된 회원 정보를 List로 변환하여 반환한다. - return null; + return members.stream() + .map(MemberResponse::from) + .toList(); } // TODO : 회원 비밀번호를 변경한다. public void changePassword(Long memberId, AuthPasswordChangeRequest request) { // DB에서 memberId에 해당하는 회원 정보를 조회하고, 존재하지 않는다면 IllegalArgumentException을 발생시킨다. + Member member = memberRepository.findById(memberId) + .orElseThrow(() -> new IllegalArgumentException("존재하지 않는 회원입니다.")); // 조회된 회원 정보의 비밀번호를 변경한다. ( request.getNewPassword()를 이용하여 변경한다. ) + member.changePassword(request.getOldPassword(), request.getNewPassword()); // 변경된 회원 정보를 DB에 저장한다. + memberRepository.save(member); } + // 회원 중 특정 날짜 이전에 태어난 회원 정보를 조회한다. + public List searchMembersWithBirthday(LocalDate date) { + // DB에서 memberBirthday에 해당하는 회원 정보를 조회한다. + List members = memberRepository.findByMemberBirthdayBefore(date); + + // 조회된 회원 정보를 List로 변환하여 반환한다. + return members.stream() + .map(MemberResponse::from) + .toList(); + } } diff --git a/src/main/java/doit/apihw/domain/member/MemberRepository.java b/src/main/java/doit/apihw/domain/member/MemberRepository.java index a795758..a9b9cb1 100644 --- a/src/main/java/doit/apihw/domain/member/MemberRepository.java +++ b/src/main/java/doit/apihw/domain/member/MemberRepository.java @@ -1,11 +1,17 @@ package doit.apihw.domain.member; import org.springframework.data.jpa.repository.JpaRepository; +import java.time.LocalDate; +import java.util.List; public interface MemberRepository extends JpaRepository { Member findByMemberLoginId(String memberLoginId); // TODO : 회원 이름으로 회원 정보를 조회한다. + List findByMemberName(String memberName); // TODO : 회원 로그인 ID와 비밀번호로 회원 정보를 조회한다. + Member findByMemberLoginIdAndMemberPassword(String memberLoginId, String memberPassword); -} + // 생일이 특정 날짜 이전인 회원 정보를 조회한다. + List findByMemberBirthdayBefore(LocalDate date); +} \ No newline at end of file