From 3322c757e60e4c0734d3f469ff5d63bd2050f7c0 Mon Sep 17 00:00:00 2001 From: john0609 Date: Tue, 8 Oct 2024 19:50:07 +0900 Subject: [PATCH] =?UTF-8?q?=EB=AF=BC=EA=B2=BD=EC=A4=80=202=EC=A3=BC?= =?UTF-8?q?=EC=B0=A8=20=EA=B3=BC=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/controller/MemberController.java | 16 +++--- .../doit/apihw/api/service/AuthService.java | 11 +++- .../doit/apihw/api/service/MemberService.java | 57 +++++++++++++++++-- .../apihw/domain/member/MemberRepository.java | 8 +++ 4 files changed, 77 insertions(+), 15 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..f6d46f2 100644 --- a/src/main/java/doit/apihw/api/controller/MemberController.java +++ b/src/main/java/doit/apihw/api/controller/MemberController.java @@ -3,14 +3,10 @@ import doit.apihw.api.controller.dto.AuthPasswordChangeRequest; import doit.apihw.api.controller.dto.MemberResponse; 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.*; + +import java.util.List; @RestController @RequiredArgsConstructor @@ -50,6 +46,10 @@ public void changePassword(@PathVariable Long memberId, @RequestBody AuthPasswor memberService.changePassword(memberId, request); } - // TODO : 자유 주제로 API를 추가로 구현해보세요. + // TODO : 자유 주제로 API를 추가로 구현해보세요. => 관리자가 회원 관리하기 위한 memberId 기준으로 정렬된 list + @PostMapping("/members/loginIdAsc") + public List searchMembersByIdAsc(@RequestParam String memberId) { + return memberService.AllMembersWithLoginIdDesc(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..5296b33 100644 --- a/src/main/java/doit/apihw/api/service/AuthService.java +++ b/src/main/java/doit/apihw/api/service/AuthService.java @@ -2,14 +2,15 @@ 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.domain.member.Member; import doit.apihw.domain.member.MemberRepository; import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; import org.springframework.web.bind.annotation.RestController; @RestController +@Service @RequiredArgsConstructor public class AuthService { @@ -52,11 +53,17 @@ public AuthLoginResponse signUp(AuthSignUpRequest request) { // TODO : 로그인을 진행한다. public AuthLoginResponse login(AuthLoginRequest request) { // DB에서 memberLoginId와 memberPassword를 조회하여 일치하는 회원이 있는지 확인한다. + Member member = memberRepository.findMemberByMemberLoginIdAndMemberPassword(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..2d2c938 100644 --- a/src/main/java/doit/apihw/api/service/MemberService.java +++ b/src/main/java/doit/apihw/api/service/MemberService.java @@ -4,12 +4,13 @@ import doit.apihw.api.controller.dto.MemberResponse; import doit.apihw.domain.member.Member; import doit.apihw.domain.member.MemberRepository; -import java.time.LocalDate; -import java.util.List; -import java.util.Optional; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; + @Service @RequiredArgsConstructor public class MemberService { @@ -31,26 +32,72 @@ public MemberResponse findOneMember(Long memberId) { // TODO : 전체 회원 정보를 조회한다. public List findAllMembers() { // DB에서 전체 회원 정보를 조회한다. + List members = new ArrayList<>(); + + List result = memberRepository.findAll(); // 조회된 회원 정보를 List로 변환하여 반환한다. - return null; + for(Member member: result) { + MemberResponse response = MemberResponse.builder() + .memberName(member.getMemberName()) + .memberBirthday(member.getMemberBirthday()) + .memberLoginId(member.getMemberLoginId()) + .build(); + members.add(response); + } + return members; } // TODO : 회원 이름으로 회원 정보를 조회한다. public List searchMembersWithName(String memberName) { // DB에서 memberName에 해당하는 회원 정보를 조회한다. + List member = new ArrayList<>(); + + List result = memberRepository.findMemberByMemberName(memberName); // 조회된 회원 정보를 List로 변환하여 반환한다. - return null; + for(Member memberInfo: result) { + MemberResponse response = MemberResponse.builder() + .memberName(memberInfo.getMemberName()) + .memberBirthday(memberInfo.getMemberBirthday()) + .memberLoginId(memberInfo.getMemberLoginId()) + .build(); + member.add(response); + } + return member; } // TODO : 회원 비밀번호를 변경한다. public void changePassword(Long memberId, AuthPasswordChangeRequest request) { // DB에서 memberId에 해당하는 회원 정보를 조회하고, 존재하지 않는다면 IllegalArgumentException을 발생시킨다. + Member member = memberRepository.findByMemberLoginId(memberId.toString()); + if(member == null) { + throw new IllegalArgumentException("존재하지 않는 회원 정보입니다."); + } // 조회된 회원 정보의 비밀번호를 변경한다. ( request.getNewPassword()를 이용하여 변경한다. ) + member.changePassword(request.getOldPassword(), request.getNewPassword()); // 변경된 회원 정보를 DB에 저장한다. + memberRepository.save(member); + } + + public List AllMembersWithLoginIdDesc(String Id) { + + List members = new ArrayList<>(); + + List sortedMembers = memberRepository.findAllByOrderByMemberLoginIdDesc(); + + for(Member member: sortedMembers) { + MemberResponse response = MemberResponse.builder() + .memberName(member.getMemberName()) + .memberBirthday(member.getMemberBirthday()) + .memberLoginId(member.getMemberLoginId()) + .build(); + members.add(response); + } + + return members; } } diff --git a/src/main/java/doit/apihw/domain/member/MemberRepository.java b/src/main/java/doit/apihw/domain/member/MemberRepository.java index a795758..fab6d6f 100644 --- a/src/main/java/doit/apihw/domain/member/MemberRepository.java +++ b/src/main/java/doit/apihw/domain/member/MemberRepository.java @@ -1,11 +1,19 @@ package doit.apihw.domain.member; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; +import java.util.List; + +@Repository public interface MemberRepository extends JpaRepository { Member findByMemberLoginId(String memberLoginId); // TODO : 회원 이름으로 회원 정보를 조회한다. + List findMemberByMemberName(String memberName); // TODO : 회원 로그인 ID와 비밀번호로 회원 정보를 조회한다. + Member findMemberByMemberLoginIdAndMemberPassword(String memberName, String memberPassword); + + List findAllByOrderByMemberLoginIdDesc(); }