From 4ea9fb82297cae6b50f033fe1091dfa40cdc7ee7 Mon Sep 17 00:00:00 2001 From: sohyun022 Date: Wed, 9 Oct 2024 02:48:01 +0900 Subject: [PATCH] =?UTF-8?q?2=EC=A3=BC=EC=B0=A8=20=EA=B3=BC=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/controller/MemberController.java | 4 ++ .../doit/apihw/api/service/AuthService.java | 13 +++--- .../doit/apihw/api/service/MemberService.java | 43 ++++++++++++++++++- .../apihw/domain/member/MemberRepository.java | 8 ++++ 4 files changed, 60 insertions(+), 8 deletions(-) diff --git a/src/main/java/doit/apihw/api/controller/MemberController.java b/src/main/java/doit/apihw/api/controller/MemberController.java index d1e5890..5f41e10 100644 --- a/src/main/java/doit/apihw/api/controller/MemberController.java +++ b/src/main/java/doit/apihw/api/controller/MemberController.java @@ -51,5 +51,9 @@ public void changePassword(@PathVariable Long memberId, @RequestBody AuthPasswor } // TODO : 자유 주제로 API를 추가로 구현해보세요. + @GetMapping("/members/birthday") + public List findAllBirthdayMembers() { + return memberService.findTodayBirthdayMember(); + } } diff --git a/src/main/java/doit/apihw/api/service/AuthService.java b/src/main/java/doit/apihw/api/service/AuthService.java index ca3dd9d..63c3c5f 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,11 +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; + // 일치하는 회원이 있다면, AuthLoginResponse로 변환하여 반환한다. + 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..827c2a2 100644 --- a/src/main/java/doit/apihw/api/service/MemberService.java +++ b/src/main/java/doit/apihw/api/service/MemberService.java @@ -5,6 +5,7 @@ import doit.apihw.domain.member.Member; import doit.apihw.domain.member.MemberRepository; import java.time.LocalDate; +import java.util.ArrayList; import java.util.List; import java.util.Optional; import lombok.RequiredArgsConstructor; @@ -31,26 +32,64 @@ public MemberResponse findOneMember(Long memberId) { // TODO : 전체 회원 정보를 조회한다. public List findAllMembers() { // DB에서 전체 회원 정보를 조회한다. + List members = memberRepository.findAll(); // 조회된 회원 정보를 List로 변환하여 반환한다. - return null; + List memberResponses = new ArrayList<>(); + + for (Member member : members) { + MemberResponse memberResponse = MemberResponse.from(member); + memberResponses.add(memberResponse); + } + + return memberResponses; } // TODO : 회원 이름으로 회원 정보를 조회한다. public List searchMembersWithName(String memberName) { // DB에서 memberName에 해당하는 회원 정보를 조회한다. + List members = memberRepository.findAllByMemberName(memberName); // 조회된 회원 정보를 List로 변환하여 반환한다. - return null; + List memberResponses = new ArrayList<>(); + for (Member member : members) { + MemberResponse memberResponse = MemberResponse.from(member); + memberResponses.add(memberResponse); + } + + return memberResponses; } // TODO : 회원 비밀번호를 변경한다. public void changePassword(Long memberId, AuthPasswordChangeRequest request) { // DB에서 memberId에 해당하는 회원 정보를 조회하고, 존재하지 않는다면 IllegalArgumentException을 발생시킨다. + Optional OptionalMember = memberRepository.findById(memberId); + + if(OptionalMember.isEmpty()) { + throw new IllegalArgumentException(); + } + + Member member = OptionalMember.get(); // 조회된 회원 정보의 비밀번호를 변경한다. ( request.getNewPassword()를 이용하여 변경한다. ) + member.changePassword(request.getOldPassword(), request.getNewPassword()); // 변경된 회원 정보를 DB에 저장한다. + memberRepository.save(member); + } + + public List findTodayBirthdayMember() { + LocalDate today = LocalDate.now(); + List members = memberRepository.findAllByMemberBirthday(today); + List memberResponses = new ArrayList<>(); + + for (Member member : members) { + MemberResponse memberResponse = MemberResponse.from(member); + memberResponses.add(memberResponse); + } + + return memberResponses; + } } diff --git a/src/main/java/doit/apihw/domain/member/MemberRepository.java b/src/main/java/doit/apihw/domain/member/MemberRepository.java index a795758..49135cf 100644 --- a/src/main/java/doit/apihw/domain/member/MemberRepository.java +++ b/src/main/java/doit/apihw/domain/member/MemberRepository.java @@ -2,10 +2,18 @@ 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 findAllByMemberName(String name); // TODO : 회원 로그인 ID와 비밀번호로 회원 정보를 조회한다. + Member findByMemberLoginIdAndMemberPassword(String memberLoginId, String memberPassword); + + List findAllByMemberBirthday(LocalDate birthday); }