diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..1529fa8 Binary files /dev/null and b/.DS_Store differ diff --git a/src/.DS_Store b/src/.DS_Store new file mode 100644 index 0000000..a77576f Binary files /dev/null and b/src/.DS_Store differ diff --git a/src/main/java/doit/apihw/api/controller/MemberController.java b/src/main/java/doit/apihw/api/controller/MemberController.java index d1e5890..855a985 100644 --- a/src/main/java/doit/apihw/api/controller/MemberController.java +++ b/src/main/java/doit/apihw/api/controller/MemberController.java @@ -11,6 +11,7 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import org.springframework.http.ResponseEntity; @RestController @RequiredArgsConstructor @@ -51,5 +52,11 @@ public void changePassword(@PathVariable Long memberId, @RequestBody AuthPasswor } // TODO : 자유 주제로 API를 추가로 구현해보세요. - + @PostMapping("/members/{memberId}/name") + public ResponseEntity updateMemberName( + @PathVariable Long memberId, + @RequestBody String newName) { + MemberResponse updatedMember = memberService.updateMemberName(memberId, newName); + return ResponseEntity.ok(updatedMember); + } } diff --git a/src/main/java/doit/apihw/api/controller/dto/AuthLoginResponse.java b/src/main/java/doit/apihw/api/controller/dto/AuthLoginResponse.java index 537edad..d57f03c 100644 --- a/src/main/java/doit/apihw/api/controller/dto/AuthLoginResponse.java +++ b/src/main/java/doit/apihw/api/controller/dto/AuthLoginResponse.java @@ -16,4 +16,4 @@ public static AuthLoginResponse from(Member member) { .memberName(member.getMemberName()) .build(); } -} +} \ No newline at end of file diff --git a/src/main/java/doit/apihw/api/service/AuthService.java b/src/main/java/doit/apihw/api/service/AuthService.java index ca3dd9d..384002c 100644 --- a/src/main/java/doit/apihw/api/service/AuthService.java +++ b/src/main/java/doit/apihw/api/service/AuthService.java @@ -9,6 +9,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.RestController; + @RestController @RequiredArgsConstructor public class AuthService { @@ -52,11 +53,16 @@ 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..23f1165 100644 --- a/src/main/java/doit/apihw/api/service/MemberService.java +++ b/src/main/java/doit/apihw/api/service/MemberService.java @@ -7,6 +7,7 @@ import java.time.LocalDate; import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -31,26 +32,41 @@ public MemberResponse findOneMember(Long memberId) { // TODO : 전체 회원 정보를 조회한다. public List findAllMembers() { // DB에서 전체 회원 정보를 조회한다. - + List members = memberRepository.findAll(); // 조회된 회원 정보를 List로 변환하여 반환한다. - return null; + return members.stream() + .map(MemberResponse::from) + .collect(Collectors.toList()); } // TODO : 회원 이름으로 회원 정보를 조회한다. public List searchMembersWithName(String memberName) { // DB에서 memberName에 해당하는 회원 정보를 조회한다. - + List members = memberRepository.findByMemberNameContaining(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()); + memberRepository.save(member); // 변경된 회원 정보를 DB에 저장한다. } + public MemberResponse updateMemberName(Long memberId, String newName) { + Member member = memberRepository.findById(memberId) + .orElseThrow(() -> new IllegalArgumentException("존재하지 않는 회원입니다.")); + + member.updateName(newName); + Member updatedMember = memberRepository.save(member); + return MemberResponse.from(updatedMember); + } + } diff --git a/src/main/java/doit/apihw/domain/member/Member.java b/src/main/java/doit/apihw/domain/member/Member.java index cb60b39..1da63f5 100644 --- a/src/main/java/doit/apihw/domain/member/Member.java +++ b/src/main/java/doit/apihw/domain/member/Member.java @@ -38,4 +38,11 @@ public void changePassword(String oldPassword, String newPassword) { } memberPassword = newPassword; } + + public void updateName(String newName) { + if (newName == null || newName.trim().isEmpty()) { + throw new IllegalArgumentException("이름은 비어있을 수 없습니다."); + } + this.memberName = newName; + } } diff --git a/src/main/java/doit/apihw/domain/member/MemberRepository.java b/src/main/java/doit/apihw/domain/member/MemberRepository.java index a795758..30ef76c 100644 --- a/src/main/java/doit/apihw/domain/member/MemberRepository.java +++ b/src/main/java/doit/apihw/domain/member/MemberRepository.java @@ -1,11 +1,12 @@ package doit.apihw.domain.member; import org.springframework.data.jpa.repository.JpaRepository; +import java.util.List; public interface MemberRepository extends JpaRepository { Member findByMemberLoginId(String memberLoginId); // TODO : 회원 이름으로 회원 정보를 조회한다. - + List findByMemberNameContaining(String memberName); // TODO : 회원 로그인 ID와 비밀번호로 회원 정보를 조회한다. - + Member findByMemberLoginIdAndMemberPassword(String memberLoginId, String memberPassword); }