From 32a7ad2f68688cf76ab929b0f0f21aa9e8250554 Mon Sep 17 00:00:00 2001 From: sebeeeen Date: Wed, 9 Oct 2024 17:30:42 +0900 Subject: [PATCH] week2-api-hw --- .DS_Store | Bin 0 -> 6148 bytes src/.DS_Store | Bin 0 -> 6148 bytes .../api/controller/MemberController.java | 9 +++++- .../api/controller/dto/AuthLoginResponse.java | 2 +- .../doit/apihw/api/service/AuthService.java | 10 +++++-- .../doit/apihw/api/service/MemberService.java | 28 ++++++++++++++---- .../java/doit/apihw/domain/member/Member.java | 7 +++++ .../apihw/domain/member/MemberRepository.java | 5 ++-- 8 files changed, 49 insertions(+), 12 deletions(-) create mode 100644 .DS_Store create mode 100644 src/.DS_Store diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..1529fa8ce1bebab64663215ac95886999e333dd6 GIT binary patch literal 6148 zcmeHKy-ve05I(073WA{{3zDAz(VZbwfr+gf6SP64QleD+ZAg)TciZoZet1KHA)fl?u=Hd47?)Y^-wCBIt=jV-YBYJ}? zts&|Kol;H(odvP!Y45we8UJ~E5kFX?td=>fniJ$fFPuk@E|JG1%;4~SX=%pZoqc@X z`@M@_Giuu!#KW&dMHx^Alz|Q~Ag58X(Sckv1!X`P=oSNfK3FuyRIv8wjt+FL1OUcR zJHeQ13HGsqsbK997Krh#K<{d##4z3+dMoo%!P=vDCnLp&k;q0W6yu^}ee0%^Nj++> z3@8I313mxP=llO)b^RYY>60>`4E!qwOq`9fA+{uUYio0S*IKj_G!~v$dtA6+;I3lK e<*RrL%?b3D2f$RY_6Q9`{|Go5v{MHDlz}gDIAd-A literal 0 HcmV?d00001 diff --git a/src/.DS_Store b/src/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..a77576fe7ca86fcaaf017e8abeb823f1b710aae2 GIT binary patch literal 6148 zcmeHK%}T^D5T4N@1uuK_m?seS4eC;#U~l3<*A*4EcG2}H6nqJv$g}7R`OS}-VDTuT zGmw0fnM|hrN;3%&@$7CnC7KXXjV8#VjEI;=U0Xg`oGfdsE~fLdzFUth@>@;v>=ku% zN>_AUKL7qs?(6!tU99>AZ1r(>|M+n9bWr-2-}={=IXBM;Mcxga(=Bbvy!4X$^1QD% zSzeFr`p>*${xYw8=a66^7zhS}fq%{bYPLwdYZ!en5DWwZ9}LL;kkAAh$H7py4s?12 z09G)oK-V)SFo^-!I1YxeK-fZo7Rr9bU<-#m`Mkz)Ftl)D&5U(C^ZVt6{e;U&rxQ1Z z(FX&;K*_+i4JT6n5AiFFUh>P37zG2tz#n6Pt9IVb@KRn|zr3E*+Jtt3CL;3&Q6SK@ m6a%#sV<7v;o;uB+M2Ej|91LX@v1>Rm4gyL@biu$6Fz^OPj75$B literal 0 HcmV?d00001 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); }