From c539e19642271c26abf71ac604daa7cd69c2f9d3 Mon Sep 17 00:00:00 2001 From: gae-ddong Date: Wed, 9 Oct 2024 12:20:40 +0900 Subject: [PATCH 1/4] =?UTF-8?q?=ED=9A=8C=EC=9B=90=20=ED=83=88=ED=87=B4=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/controller/MemberController.java | 15 ++++---- .../doit/apihw/api/service/AuthService.java | 9 +++-- .../doit/apihw/api/service/MemberService.java | 34 +++++++++++++++---- .../apihw/domain/member/MemberRepository.java | 4 +++ 4 files changed, 46 insertions(+), 16 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..5af678a 100644 --- a/src/main/java/doit/apihw/api/controller/MemberController.java +++ b/src/main/java/doit/apihw/api/controller/MemberController.java @@ -5,12 +5,7 @@ import doit.apihw.api.service.MemberService; import java.util.List; import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; @RestController @RequiredArgsConstructor @@ -51,5 +46,11 @@ public void changePassword(@PathVariable Long memberId, @RequestBody AuthPasswor } // TODO : 자유 주제로 API를 추가로 구현해보세요. - + /** + * 회원 탈퇴 시 회원 정보를 삭제한다. + */ + @DeleteMapping("/members/{memberId}/delete") + public void deleteMember(@PathVariable Long memberId) { + memberService.deleteMember(memberId); + } } diff --git a/src/main/java/doit/apihw/api/service/AuthService.java b/src/main/java/doit/apihw/api/service/AuthService.java index ca3dd9d..9be95f8 100644 --- a/src/main/java/doit/apihw/api/service/AuthService.java +++ b/src/main/java/doit/apihw/api/service/AuthService.java @@ -52,11 +52,14 @@ 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..0209cd7 100644 --- a/src/main/java/doit/apihw/api/service/MemberService.java +++ b/src/main/java/doit/apihw/api/service/MemberService.java @@ -31,26 +31,48 @@ public MemberResponse findOneMember(Long memberId) { // TODO : 전체 회원 정보를 조회한다. public List findAllMembers() { // DB에서 전체 회원 정보를 조회한다. - + List member = memberRepository.findAll(); // 조회된 회원 정보를 List로 변환하여 반환한다. - return null; + // 얘도 답지 없었으면 못 구현했음........... + return member.stream() + .map(MemberResponse::from) + .toList(); } // TODO : 회원 이름으로 회원 정보를 조회한다. public List searchMembersWithName(String memberName) { // DB에서 memberName에 해당하는 회원 정보를 조회한다. - + List member = memberRepository.findByMemberName(memberName); // 조회된 회원 정보를 List로 변환하여 반환한다. - return null; + return member.stream() + .map(MemberResponse::from) + .toList(); } // TODO : 회원 비밀번호를 변경한다. public void changePassword(Long memberId, AuthPasswordChangeRequest request) { // DB에서 memberId에 해당하는 회원 정보를 조회하고, 존재하지 않는다면 IllegalArgumentException을 발생시킨다. - +// Member member = memberRepository.findById(memberId); +// if (member.isEmpty()) { +// throw new IllegalArgumentException("존재 안함 ㅠㅠ"); +// } + // 이렇게 쓰면 되는데 왜 위처럼 쓰면 안되지ㅣ.. + Member member = memberRepository.findById(memberId) + .orElseThrow(() -> new IllegalArgumentException("존재하지 않는 회원입니다.")); // 조회된 회원 정보의 비밀번호를 변경한다. ( request.getNewPassword()를 이용하여 변경한다. ) - + // 오... 이렇게... + member.changePassword(request.getOldPassword(), request.getNewPassword()); // 변경된 회원 정보를 DB에 저장한다. + memberRepository.save(member); } + public void deleteMember(Long memberId) { + Optional member = memberRepository.findById(memberId); + if (member.isEmpty()) { + throw new IllegalArgumentException("존재하지 않는 회원입니다."); + } + else{ + memberRepository.deleteById(memberId); + } + } } diff --git a/src/main/java/doit/apihw/domain/member/MemberRepository.java b/src/main/java/doit/apihw/domain/member/MemberRepository.java index a795758..4e48d46 100644 --- a/src/main/java/doit/apihw/domain/member/MemberRepository.java +++ b/src/main/java/doit/apihw/domain/member/MemberRepository.java @@ -2,10 +2,14 @@ import org.springframework.data.jpa.repository.JpaRepository; +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); } From 418d4413904a5073163c336ee8015e2b1328411b Mon Sep 17 00:00:00 2001 From: gae-ddong <144202407+gae-ddong@users.noreply.github.com> Date: Wed, 30 Oct 2024 23:18:08 +0900 Subject: [PATCH 2/4] Update README.md --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index d473b17..5482e31 100644 --- a/README.md +++ b/README.md @@ -3,4 +3,8 @@ controller - service - repository의 흐름을 이해하고, api를 구현할 수 있다. ### API 명세서 -https://documenter.getpostman.com/view/28528877/2sAXxLDEqE \ No newline at end of file +https://documenter.getpostman.com/view/28528877/2sAXxLDEqE + + +# 배포 +https://e146-119-194-123-73.ngrok-free.app From 58ae367bbd52df497df183795f8e500a6e086bbc Mon Sep 17 00:00:00 2001 From: gae-ddong <144202407+gae-ddong@users.noreply.github.com> Date: Wed, 30 Oct 2024 23:18:46 +0900 Subject: [PATCH 3/4] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 5482e31..4d4ed07 100644 --- a/README.md +++ b/README.md @@ -8,3 +8,4 @@ https://documenter.getpostman.com/view/28528877/2sAXxLDEqE # 배포 https://e146-119-194-123-73.ngrok-free.app +![Uploading 스크린샷 2024-10-30 오후 11.18.40.png…]() From 4b81563d82924cf96cb5b5ebede575c562bc429d Mon Sep 17 00:00:00 2001 From: gae-ddong <144202407+gae-ddong@users.noreply.github.com> Date: Wed, 30 Oct 2024 23:19:59 +0900 Subject: [PATCH 4/4] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4d4ed07..6d10ace 100644 --- a/README.md +++ b/README.md @@ -8,4 +8,4 @@ https://documenter.getpostman.com/view/28528877/2sAXxLDEqE # 배포 https://e146-119-194-123-73.ngrok-free.app -![Uploading 스크린샷 2024-10-30 오후 11.18.40.png…]() +스크린샷 2024-10-30 오후 11 19 03