diff --git a/src/main/java/doit/apihw/api/controller/AuthController.java b/src/main/java/doit/apihw/api/controller/AuthController.java index 918dd83..7dc39f9 100644 --- a/src/main/java/doit/apihw/api/controller/AuthController.java +++ b/src/main/java/doit/apihw/api/controller/AuthController.java @@ -28,6 +28,7 @@ public MemberController(MemberService memberService) { */ @GetMapping("/auth/members/validate") public void validateLoginId(@RequestParam String memberLoginId) { + authService.validateLoginId(memberLoginId); } diff --git a/src/main/java/doit/apihw/api/controller/MemberController.java b/src/main/java/doit/apihw/api/controller/MemberController.java index d1e5890..9312201 100644 --- a/src/main/java/doit/apihw/api/controller/MemberController.java +++ b/src/main/java/doit/apihw/api/controller/MemberController.java @@ -2,6 +2,7 @@ import doit.apihw.api.controller.dto.AuthPasswordChangeRequest; import doit.apihw.api.controller.dto.MemberResponse; +import doit.apihw.api.controller.dto.NewNameRequest; import doit.apihw.api.service.MemberService; import java.util.List; import lombok.RequiredArgsConstructor; @@ -23,6 +24,7 @@ public class MemberController { */ @GetMapping("/members/{memberId}") public MemberResponse findOneMember(@PathVariable Long memberId) { + return memberService.findOneMember(memberId); } @@ -51,5 +53,8 @@ public void changePassword(@PathVariable Long memberId, @RequestBody AuthPasswor } // TODO : 자유 주제로 API를 추가로 구현해보세요. - + @PostMapping("/members/{memberId}/name") + public void changeName(@PathVariable Long memberId, @RequestBody NewNameRequest request){ + memberService.changeName(memberId, request); + } } diff --git a/src/main/java/doit/apihw/api/controller/dto/NewNameRequest.java b/src/main/java/doit/apihw/api/controller/dto/NewNameRequest.java new file mode 100644 index 0000000..fbce984 --- /dev/null +++ b/src/main/java/doit/apihw/api/controller/dto/NewNameRequest.java @@ -0,0 +1,8 @@ +package doit.apihw.api.controller.dto; + +import lombok.Data; + +@Data +public class NewNameRequest { + String newname; +} diff --git a/src/main/java/doit/apihw/api/service/AuthService.java b/src/main/java/doit/apihw/api/service/AuthService.java index ca3dd9d..19ecad5 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.findByMemberLoginId(request.getMemberLoginId()); // 만약 일치하는 회원이 없다면, 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..4c4670c 100644 --- a/src/main/java/doit/apihw/api/service/MemberService.java +++ b/src/main/java/doit/apihw/api/service/MemberService.java @@ -2,6 +2,7 @@ import doit.apihw.api.controller.dto.AuthPasswordChangeRequest; import doit.apihw.api.controller.dto.MemberResponse; +import doit.apihw.api.controller.dto.NewNameRequest; import doit.apihw.domain.member.Member; import doit.apihw.domain.member.MemberRepository; import java.time.LocalDate; @@ -31,26 +32,48 @@ public MemberResponse findOneMember(Long memberId) { // TODO : 전체 회원 정보를 조회한다. public List findAllMembers() { // DB에서 전체 회원 정보를 조회한다. - + List members = memberRepository.findAll(); // 조회된 회원 정보를 List로 변환하여 반환한다. - return null; + if(members.isEmpty()) + throw new IllegalArgumentException("회원이 없음"); + + return members.stream() + .map(MemberResponse::from) + .toList(); } // TODO : 회원 이름으로 회원 정보를 조회한다. public List searchMembersWithName(String memberName) { // DB에서 memberName에 해당하는 회원 정보를 조회한다. + List members = memberRepository.findByMemberName(memberName); + if(members==null) + throw new IllegalArgumentException("해당 회원이 없어여"); // 조회된 회원 정보를 List로 변환하여 반환한다. - return null; + return members.stream() + .map(MemberResponse::from) + .toList(); } // TODO : 회원 비밀번호를 변경한다. public void changePassword(Long memberId, AuthPasswordChangeRequest request) { // DB에서 memberId에 해당하는 회원 정보를 조회하고, 존재하지 않는다면 IllegalArgumentException을 발생시킨다. - + Member member = memberRepository.findByIdAndMemberPassword(memberId, request.getOldPassword()); + if(member==null) + throw new IllegalArgumentException("비번을 바꾼다고? 너 누군데"); // 조회된 회원 정보의 비밀번호를 변경한다. ( request.getNewPassword()를 이용하여 변경한다. ) - + member.changePassword(request.getOldPassword(),request.getNewPassword()); // 변경된 회원 정보를 DB에 저장한다. + memberRepository.save(member); +; } + + // 이름 바꾸기 + public void changeName(Long memberId, NewNameRequest request){ + Optional member = memberRepository.findById(memberId); + if(member.isEmpty()) + throw new IllegalArgumentException("넌 무슨 이름을 바꾼다는 말을"); + member.get().changeName(request.getNewname()); + memberRepository.save(member.get()); } } diff --git a/src/main/java/doit/apihw/domain/member/Member.java b/src/main/java/doit/apihw/domain/member/Member.java index cb60b39..beb4e38 100644 --- a/src/main/java/doit/apihw/domain/member/Member.java +++ b/src/main/java/doit/apihw/domain/member/Member.java @@ -38,4 +38,10 @@ public void changePassword(String oldPassword, String newPassword) { } memberPassword = newPassword; } + + public void changeName(String name){ + if(name.equals(memberName)) + throw new RuntimeException("뭘 바꾸겠다는건데"); + memberName = name; + } } diff --git a/src/main/java/doit/apihw/domain/member/MemberRepository.java b/src/main/java/doit/apihw/domain/member/MemberRepository.java index a795758..d260c10 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); // 반환 타입 Member -> List // TODO : 회원 로그인 ID와 비밀번호로 회원 정보를 조회한다. + Member findByIdAndMemberPassword(Long loginId, String password); + }