diff --git a/src/main/java/doit/apihw/api/controller/MemberController.java b/src/main/java/doit/apihw/api/controller/MemberController.java index d1e5890..8cf8ae0 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/{memberLoginId}/delete") + public void deleteMember(@PathVariable String memberLoginId, @RequestParam String memberName) { + memberService.deleteMember(memberLoginId, memberName); + } } diff --git a/src/main/java/doit/apihw/api/service/AuthService.java b/src/main/java/doit/apihw/api/service/AuthService.java index ca3dd9d..9bbea17 100644 --- a/src/main/java/doit/apihw/api/service/AuthService.java +++ b/src/main/java/doit/apihw/api/service/AuthService.java @@ -52,11 +52,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; + else + 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..5867d78 100644 --- a/src/main/java/doit/apihw/api/service/MemberService.java +++ b/src/main/java/doit/apihw/api/service/MemberService.java @@ -31,26 +31,41 @@ 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 void deleteMember(String memberLoginId, String memberName) { + Member member = memberRepository.findByMemberLoginIdAndMemberName(memberLoginId, memberName); + if (member == null) { + throw new IllegalArgumentException("존재하지 않는 회원입니다. 올바른 Id와 이름을 입력하세요."); + } + memberRepository.delete(member); } } diff --git a/src/main/java/doit/apihw/domain/member/MemberRepository.java b/src/main/java/doit/apihw/domain/member/MemberRepository.java index a795758..31c2ee1 100644 --- a/src/main/java/doit/apihw/domain/member/MemberRepository.java +++ b/src/main/java/doit/apihw/domain/member/MemberRepository.java @@ -2,10 +2,13 @@ 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); + Member findByMemberLoginIdAndMemberName(String memberLoginId, String memberName); }