From bc01f9940c39bed879818496825e4565583fda1f Mon Sep 17 00:00:00 2001 From: DongGeon0908 <50691225+DongGeon0908@users.noreply.github.com> Date: Thu, 30 Dec 2021 16:50:37 +0900 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20[Refactor/member-12]=20mem?= =?UTF-8?q?ber=20=EB=8F=84=EB=A9=94=EC=9D=B8=20=EA=B8=B0=EB=B3=B8=20?= =?UTF-8?q?=EB=A6=AC=ED=8E=99=ED=86=A0=EB=A7=81=20(#17)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * :recycle: 롬복 추가 * :recycle: 도메인 리펙토링 진행 * :recycle: common 기능 구현 * :recycle: Member 도메인 작업 진행 --- .../kr/ac/hs/oing/auth/SecurityUtils.java | 33 +++++--- .../common/converter/ResponseConverter.java | 15 +++- .../kr/ac/hs/oing/common/dto/ResponseDto.java | 32 ++++++-- .../member/application/MemberService.java | 51 ++++-------- .../member/converter/MemberConverter.java | 46 +++++------ .../kr/ac/hs/oing/member/domain/Member.java | 77 ++++--------------- .../kr/ac/hs/oing/member/domain/vo/Email.java | 19 ++--- .../kr/ac/hs/oing/member/domain/vo/Name.java | 13 +--- .../ac/hs/oing/member/domain/vo/Nickname.java | 13 ++-- .../ac/hs/oing/member/domain/vo/Password.java | 18 ++--- .../hs/oing/member/domain/vo/PhoneNumber.java | 14 ++-- .../kr/ac/hs/oing/member/domain/vo/Role.java | 6 +- .../member/dto/bundle/MemberLoginBundle.java | 19 +---- .../member/dto/bundle/MemberSignBundle.java | 30 +++----- .../member/dto/bundle/MemberUpdateBundle.java | 24 +++--- .../member/dto/request/MemberSignRequest.java | 29 ++----- .../dto/request/MemberUpdateRequest.java | 21 ++--- .../infrastructure/MemberRepository.java | 1 + .../member/presentation/MemberController.java | 14 ++-- 19 files changed, 187 insertions(+), 288 deletions(-) diff --git a/src/main/java/kr/ac/hs/oing/auth/SecurityUtils.java b/src/main/java/kr/ac/hs/oing/auth/SecurityUtils.java index b15591d..bc9e23a 100644 --- a/src/main/java/kr/ac/hs/oing/auth/SecurityUtils.java +++ b/src/main/java/kr/ac/hs/oing/auth/SecurityUtils.java @@ -1,32 +1,45 @@ package kr.ac.hs.oing.auth; +import java.util.Objects; import kr.ac.hs.oing.error.ErrorMessage; import kr.ac.hs.oing.error.exception.NonExitsException; +import lombok.AccessLevel; +import lombok.NoArgsConstructor; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.userdetails.UserDetails; -import java.util.Optional; - +@NoArgsConstructor(access = AccessLevel.PRIVATE) public class SecurityUtils { - private SecurityUtils() { - } - - public static Optional getCurrentUsername() { + public static String getCurrentUsername() { Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); isNullAuthentication(authentication); if (authentication.getPrincipal() instanceof UserDetails) { UserDetails springSecurityUser = (UserDetails) authentication.getPrincipal(); - return Optional.ofNullable(springSecurityUser.getUsername()); + + isNullSpringSecurityUser(springSecurityUser); + + return springSecurityUser.getUsername(); + } + + if (Objects.isNull(authentication.getPrincipal())) { + throw new NonExitsException(ErrorMessage.NOT_EXIST_MEMBER); } - return Optional.ofNullable((String) authentication.getPrincipal()); - } + return authentication.getPrincipal().toString(); + } + private static void isNullAuthentication(Authentication authentication) { - if (authentication == null) { + if (Objects.isNull(authentication)) { + throw new NonExitsException(ErrorMessage.NOT_EXIST_MEMBER); + } + } + + private static void isNullSpringSecurityUser(UserDetails springSecurityUser) { + if (Objects.isNull(springSecurityUser.getUsername())) { throw new NonExitsException(ErrorMessage.NOT_EXIST_MEMBER); } } diff --git a/src/main/java/kr/ac/hs/oing/common/converter/ResponseConverter.java b/src/main/java/kr/ac/hs/oing/common/converter/ResponseConverter.java index 0257a5b..7997592 100644 --- a/src/main/java/kr/ac/hs/oing/common/converter/ResponseConverter.java +++ b/src/main/java/kr/ac/hs/oing/common/converter/ResponseConverter.java @@ -1,6 +1,7 @@ package kr.ac.hs.oing.common.converter; -import kr.ac.hs.oing.common.dto.ResponseDto; +import kr.ac.hs.oing.common.dto.ResponseDto.ResponseDtoV1; +import kr.ac.hs.oing.common.dto.ResponseDto.ResponseDtoV2; import kr.ac.hs.oing.common.dto.ResponseMessage; import kr.ac.hs.oing.error.ErrorMessage; import kr.ac.hs.oing.error.ErrorResponseDto; @@ -10,11 +11,19 @@ @Component public class ResponseConverter { - public ResponseEntity> toResponseEntity(ResponseMessage message, T data) { + public ResponseEntity toResponseEntity(ResponseMessage message) { return ResponseEntity .status(message.getStatus()) .body( - new ResponseDto<>(message, data) + new ResponseDtoV1(message) + ); + } + + public ResponseEntity> toResponseEntity(ResponseMessage message, T data) { + return ResponseEntity + .status(message.getStatus()) + .body( + new ResponseDtoV2<>(message, data) ); } diff --git a/src/main/java/kr/ac/hs/oing/common/dto/ResponseDto.java b/src/main/java/kr/ac/hs/oing/common/dto/ResponseDto.java index 7155a8c..d70c8fb 100644 --- a/src/main/java/kr/ac/hs/oing/common/dto/ResponseDto.java +++ b/src/main/java/kr/ac/hs/oing/common/dto/ResponseDto.java @@ -6,13 +6,29 @@ @Getter public class ResponseDto { - private final String message; - private final LocalDateTime serverDateTime; - private final T data; - - public ResponseDto(ResponseMessage message, T data) { - this.message = message.name(); - this.serverDateTime = LocalDateTime.now(); - this.data = data; + @Getter + public static class ResponseDtoV1 { + + private final String message; + private final LocalDateTime serverDateTime; + + public ResponseDtoV1(ResponseMessage message) { + this.message = message.name(); + this.serverDateTime = LocalDateTime.now(); + } + } + + @Getter + public static class ResponseDtoV2 { + + private final String message; + private final LocalDateTime serverDateTime; + private final T data; + + public ResponseDtoV2(ResponseMessage message, T data) { + this.message = message.name(); + this.serverDateTime = LocalDateTime.now(); + this.data = data; + } } } \ No newline at end of file diff --git a/src/main/java/kr/ac/hs/oing/member/application/MemberService.java b/src/main/java/kr/ac/hs/oing/member/application/MemberService.java index 18b475f..42fb87d 100644 --- a/src/main/java/kr/ac/hs/oing/member/application/MemberService.java +++ b/src/main/java/kr/ac/hs/oing/member/application/MemberService.java @@ -5,7 +5,6 @@ import kr.ac.hs.oing.error.exception.NonExitsException; import kr.ac.hs.oing.member.converter.MemberConverter; import kr.ac.hs.oing.member.domain.Member; -import kr.ac.hs.oing.member.dto.bundle.MemberLoginBundle; import kr.ac.hs.oing.member.dto.bundle.MemberSignBundle; import kr.ac.hs.oing.member.dto.bundle.MemberUpdateBundle; import kr.ac.hs.oing.member.infrastructure.MemberRepository; @@ -22,6 +21,7 @@ @Service @RequiredArgsConstructor public class MemberService { + private final MemberRepository memberRepository; private final PasswordEncoder passwordEncoder; private final MemberConverter memberConverter; @@ -45,22 +45,32 @@ public void createMember(MemberSignBundle bundle) { @Transactional public void update(MemberUpdateBundle bundle) { - Member member = memberRepository.findMemberByEmail(bundle.getEmail()) - .orElseThrow(() -> { - throw new NonExitsException(ErrorMessage.NOT_EXIST_MEMBER); - }); + Member member = findByEmail(bundle.getEmail()); - if (existsByNickname(bundle.getNickname()) && !member.isSameNickname(bundle.getNickname())) { + if (existsByNickname(bundle.getNickname()) && !member.isSameNickname( + bundle.getNickname())) { throw new DuplicationArgumentException(ErrorMessage.DUPLICATION_MEMBER_NICKNAME); } - if (existsByPhoneNumber(bundle.getPhoneNumber()) && !member.isSamePhoneNumber(bundle.getPhoneNumber())) { + if (existsByPhoneNumber(bundle.getPhoneNumber()) && !member.isSamePhoneNumber( + bundle.getPhoneNumber())) { throw new DuplicationArgumentException(ErrorMessage.DUPLICATION_MEMBER_PHONE_NUMBER); } member.update(passwordEncoder, bundle); } + @Transactional + public void changeRole(Email email) { + Member member = findByEmail(email); + member.makeMiddleRole(); + } + + private Member findByEmail(Email email) { + return memberRepository.findMemberByEmail(email) + .orElseThrow(() -> new NonExitsException(ErrorMessage.NOT_EXIST_MEMBER)); + } + private boolean existsByEmail(Email email) { return memberRepository.existsByEmail(email); } @@ -72,31 +82,4 @@ private boolean existsByNickname(Nickname nickname) { private boolean existsByPhoneNumber(PhoneNumber phoneNumber) { return memberRepository.existsByPhoneNumber(phoneNumber); } - - @Transactional(readOnly = true) - public MemberLoginBundle findMember(Email email) { - Member member = memberRepository.findMemberByEmail(email) - .orElseThrow(() -> { - throw new NonExitsException(ErrorMessage.NOT_EXIST_MEMBER); - }); - String clubName = Objects.isNull(member.getClub()) ? "NON_INCLUDE_CLUB" : member.getClub().getName().getName(); - return memberConverter.toMemberLoginDto(member.getId(), member.getNickname(), member.getRole(), clubName); - } - - @Transactional - public void changeRole(Email email) { - Member member = memberRepository.findMemberByEmail(email) - .orElseThrow(() -> { - throw new NonExitsException(ErrorMessage.NOT_EXIST_MEMBER); - }); - member.makeMiddleRole(); - } - - @Transactional(readOnly = true) - public Long findClubId(Email email) { - return memberRepository.findMemberByEmail(email) - .orElseThrow(() -> { - throw new NonExitsException(ErrorMessage.NOT_INCLUDE_CLUB); - }).getClub().getId(); - } } diff --git a/src/main/java/kr/ac/hs/oing/member/converter/MemberConverter.java b/src/main/java/kr/ac/hs/oing/member/converter/MemberConverter.java index 57e9098..e9a7b67 100644 --- a/src/main/java/kr/ac/hs/oing/member/converter/MemberConverter.java +++ b/src/main/java/kr/ac/hs/oing/member/converter/MemberConverter.java @@ -12,43 +12,43 @@ @Component public class MemberConverter { + public MemberSignBundle toMemberSignBundle(MemberSignRequest request) { return MemberSignBundle.builder() - .email(new Email(request.getEmail())) - .password(new Password(request.getPassword())) - .name(new Name(request.getName())) - .nickname(new Nickname(request.getNickname())) - .phoneNumber(new PhoneNumber(request.getPhoneNumber())) - .build(); + .email(request.getEmail()) + .password(request.getPassword()) + .name(request.getName()) + .nickname(request.getNickname()) + .phoneNumber(request.getPhoneNumber()) + .build(); } public Member toMember(PasswordEncoder passwordEncoder, MemberSignBundle memberSignDto) { Password password = memberSignDto.getPassword().encode(passwordEncoder); return Member.builder() - .email(memberSignDto.getEmail()) - .password(password) - .name(memberSignDto.getName()) - .nickname(memberSignDto.getNickname()) - .phoneNumber(memberSignDto.getPhoneNumber()) - .role(Role.ROLE_USER) - .build(); + .email(memberSignDto.getEmail()) + .password(password) + .name(memberSignDto.getName()) + .nickname(memberSignDto.getNickname()) + .phoneNumber(memberSignDto.getPhoneNumber()) + .build(); } public MemberLoginBundle toMemberLoginDto(Long id, Nickname nickname, Role role, String name) { return MemberLoginBundle.builder() - .id(id) - .nickname(nickname) - .role(role) - .clubName(name) - .build(); + .id(id) + .nickname(nickname) + .role(role) + .clubName(name) + .build(); } public MemberUpdateBundle toMemberUpdateBundle(String username, MemberUpdateRequest request) { return MemberUpdateBundle.builder() - .email(new Email(username)) - .password(new Password(request.getPassword())) - .nickname(new Nickname(request.getNickname())) - .phoneNumber(new PhoneNumber(request.getPhoneNumber())) - .build(); + .email(username) + .password(request.getPassword()) + .nickname(request.getNickname()) + .phoneNumber(request.getPhoneNumber()) + .build(); } } \ No newline at end of file diff --git a/src/main/java/kr/ac/hs/oing/member/domain/Member.java b/src/main/java/kr/ac/hs/oing/member/domain/Member.java index bfc9bb2..7fb9831 100644 --- a/src/main/java/kr/ac/hs/oing/member/domain/Member.java +++ b/src/main/java/kr/ac/hs/oing/member/domain/Member.java @@ -1,13 +1,9 @@ package kr.ac.hs.oing.member.domain; import com.fasterxml.jackson.annotation.JsonIgnore; -import kr.ac.hs.oing.club.domain.Club; -import kr.ac.hs.oing.comment.domain.Comment; import kr.ac.hs.oing.common.domain.DateEntity; import kr.ac.hs.oing.member.domain.vo.*; import kr.ac.hs.oing.member.dto.bundle.MemberUpdateBundle; -import kr.ac.hs.oing.post.domain.Post; -import kr.ac.hs.oing.subscription.domain.Subscription; import lombok.*; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.crypto.password.PasswordEncoder; @@ -15,13 +11,12 @@ import javax.persistence.*; import java.util.Collection; import java.util.Collections; -import java.util.Set; -import java.util.TreeSet; +@Getter @Entity -@Builder -@AllArgsConstructor +@NoArgsConstructor(access = AccessLevel.PROTECTED) public class Member extends DateEntity { + @JsonIgnore @Id @Column(name = "member_id") @@ -48,72 +43,26 @@ public class Member extends DateEntity { @Column(name = "member_role", nullable = false) private Role role; - @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "club_Id") - private Club club; - - @OneToMany(mappedBy = "subscriptionMember", cascade = CascadeType.ALL, orphanRemoval = true) - private Set subscriptions = new TreeSet<>(); - - @OneToMany(mappedBy = "board", cascade = CascadeType.ALL, orphanRemoval = true) - private Set posts = new TreeSet<>(); - - @OneToMany(mappedBy = "member", cascade = CascadeType.ALL, orphanRemoval = true) - private Set comments = new TreeSet<>(); - - protected Member() { - - } - - public Email getEmail() { - return email; - } - - public Password getPassword() { - return password; - } - - public Nickname getNickname() { - return nickname; - } - - public Role getRole() { - return role; + @Builder + public Member(Email email, Password password, Name name, + Nickname nickname, PhoneNumber phoneNumber) { + this.email = email; + this.password = password; + this.name = name; + this.nickname = nickname; + this.phoneNumber = phoneNumber; + this.role = Role.ROLE_USER; } public Collection grantedAuthorities() { return Collections - .singletonList(role.getGrantedAuthority()); + .singletonList(role.getGrantedAuthority()); } public void makeMiddleRole() { this.role = Role.ROLE_MIDDLE_ADMIN; } - public void addClub(Club club) { - this.club = club; - } - - public Club getClub() { - return club; - } - - public Set getPosts() { - return posts; - } - - public Set getComments() { - return comments; - } - - public Set getSubscriptions() { - return subscriptions; - } - - public Long getId() { - return id; - } - public boolean isSameNickname(Nickname nickname) { return this.nickname.equals(nickname); } diff --git a/src/main/java/kr/ac/hs/oing/member/domain/vo/Email.java b/src/main/java/kr/ac/hs/oing/member/domain/vo/Email.java index 9347d3b..30445a2 100644 --- a/src/main/java/kr/ac/hs/oing/member/domain/vo/Email.java +++ b/src/main/java/kr/ac/hs/oing/member/domain/vo/Email.java @@ -2,16 +2,20 @@ import kr.ac.hs.oing.error.exception.InvalidArgumentException; import kr.ac.hs.oing.error.ErrorMessage; +import lombok.AccessLevel; import lombok.EqualsAndHashCode; import javax.persistence.Column; import javax.persistence.Embeddable; import javax.persistence.Transient; import java.util.regex.Pattern; +import lombok.Getter; +import lombok.NoArgsConstructor; - +@Getter @Embeddable @EqualsAndHashCode +@NoArgsConstructor(access = AccessLevel.PROTECTED) public class Email { @Transient @@ -20,10 +24,6 @@ public class Email { @Column(name = "member_email", nullable = false) private String email; - protected Email() { - - } - public Email(String email) { validate(email); this.email = email; @@ -34,13 +34,4 @@ public void validate(String email) { throw new InvalidArgumentException(ErrorMessage.INVALID_MEMBER_EMAIL); } } - - public String getEmail() { - return email; - } - - @Override - public String toString() { - return email; - } } diff --git a/src/main/java/kr/ac/hs/oing/member/domain/vo/Name.java b/src/main/java/kr/ac/hs/oing/member/domain/vo/Name.java index 202b87b..d744ec6 100644 --- a/src/main/java/kr/ac/hs/oing/member/domain/vo/Name.java +++ b/src/main/java/kr/ac/hs/oing/member/domain/vo/Name.java @@ -8,9 +8,13 @@ import javax.persistence.Embeddable; import javax.persistence.Transient; import java.util.regex.Pattern; +import lombok.Getter; +import lombok.NoArgsConstructor; +@Getter @Embeddable @EqualsAndHashCode +@NoArgsConstructor public class Name { @Transient @@ -19,10 +23,6 @@ public class Name { @Column(name = "member_name", nullable = false) private String name; - protected Name() { - - } - public Name(String name) { validate(name); this.name = name; @@ -33,9 +33,4 @@ public void validate(String name) { throw new InvalidArgumentException(ErrorMessage.INVALID_MEMBER_NAME); } } - - public String getName() { - return name; - } - } diff --git a/src/main/java/kr/ac/hs/oing/member/domain/vo/Nickname.java b/src/main/java/kr/ac/hs/oing/member/domain/vo/Nickname.java index 4fb8cd8..b3a416b 100644 --- a/src/main/java/kr/ac/hs/oing/member/domain/vo/Nickname.java +++ b/src/main/java/kr/ac/hs/oing/member/domain/vo/Nickname.java @@ -2,15 +2,20 @@ import kr.ac.hs.oing.error.exception.InvalidArgumentException; import kr.ac.hs.oing.error.ErrorMessage; +import lombok.AccessLevel; import lombok.EqualsAndHashCode; import javax.persistence.Column; import javax.persistence.Embeddable; import javax.persistence.Transient; import java.util.regex.Pattern; +import lombok.Getter; +import lombok.NoArgsConstructor; +@Getter @Embeddable @EqualsAndHashCode +@NoArgsConstructor(access = AccessLevel.PROTECTED) public class Nickname { @Transient @@ -19,10 +24,6 @@ public class Nickname { @Column(name = "member_nickname", nullable = false) private String nickname; - protected Nickname() { - - } - public Nickname(String nickname) { validate(nickname); this.nickname = nickname; @@ -33,8 +34,4 @@ public void validate(String nickname) { throw new InvalidArgumentException(ErrorMessage.INVALID_MEMBER_NICKNAME); } } - - public String getNickname() { - return nickname; - } } diff --git a/src/main/java/kr/ac/hs/oing/member/domain/vo/Password.java b/src/main/java/kr/ac/hs/oing/member/domain/vo/Password.java index fa33e85..5d7338d 100644 --- a/src/main/java/kr/ac/hs/oing/member/domain/vo/Password.java +++ b/src/main/java/kr/ac/hs/oing/member/domain/vo/Password.java @@ -2,8 +2,11 @@ import kr.ac.hs.oing.error.exception.InvalidArgumentException; import kr.ac.hs.oing.error.ErrorMessage; +import lombok.AccessLevel; import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; import org.springframework.security.crypto.password.PasswordEncoder; import javax.persistence.Column; @@ -11,8 +14,10 @@ import javax.persistence.Transient; import java.util.regex.Pattern; +@Getter @Embeddable @EqualsAndHashCode +@NoArgsConstructor(access = AccessLevel.PROTECTED) public class Password { @Transient @@ -21,10 +26,6 @@ public class Password { @Column(name = "member_password", nullable = false) private String password; - protected Password() { - - } - public Password(String password) { validate(password); this.password = password; @@ -44,13 +45,4 @@ public void validate(String password) { throw new InvalidArgumentException(ErrorMessage.INVALID_MEMBER_PASSWORD); } } - - public String getPassword() { - return password; - } - - @Override - public String toString() { - return password; - } } diff --git a/src/main/java/kr/ac/hs/oing/member/domain/vo/PhoneNumber.java b/src/main/java/kr/ac/hs/oing/member/domain/vo/PhoneNumber.java index 0effe26..0bcbfe6 100644 --- a/src/main/java/kr/ac/hs/oing/member/domain/vo/PhoneNumber.java +++ b/src/main/java/kr/ac/hs/oing/member/domain/vo/PhoneNumber.java @@ -2,16 +2,22 @@ import kr.ac.hs.oing.error.exception.InvalidArgumentException; import kr.ac.hs.oing.error.ErrorMessage; +import lombok.AccessLevel; import lombok.EqualsAndHashCode; import javax.persistence.Column; import javax.persistence.Embeddable; import javax.persistence.Transient; import java.util.regex.Pattern; +import lombok.Getter; +import lombok.NoArgsConstructor; +@Getter @Embeddable @EqualsAndHashCode +@NoArgsConstructor(access = AccessLevel.PROTECTED) public class PhoneNumber { + @Transient private static final String PHONE_NUMBER_VALIDATOR = "^010[0-9]{8}$"; @@ -23,17 +29,9 @@ public PhoneNumber(String phoneNumber) { this.phoneNumber = phoneNumber; } - protected PhoneNumber() { - - } - public void validate(String phoneNumber) { if (!Pattern.matches(PHONE_NUMBER_VALIDATOR, phoneNumber)) { throw new InvalidArgumentException(ErrorMessage.INVALID_MEMBER_PHONE_NUMBER); } } - - public String getPhoneNumber() { - return phoneNumber; - } } \ No newline at end of file diff --git a/src/main/java/kr/ac/hs/oing/member/domain/vo/Role.java b/src/main/java/kr/ac/hs/oing/member/domain/vo/Role.java index 64e98ed..34bdbfc 100644 --- a/src/main/java/kr/ac/hs/oing/member/domain/vo/Role.java +++ b/src/main/java/kr/ac/hs/oing/member/domain/vo/Role.java @@ -1,9 +1,11 @@ package kr.ac.hs.oing.member.domain.vo; +import lombok.Getter; import lombok.RequiredArgsConstructor; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.SimpleGrantedAuthority; +@Getter @RequiredArgsConstructor public enum Role { ROLE_GUEST(new SimpleGrantedAuthority("ROLE_GUEST")), @@ -12,8 +14,4 @@ public enum Role { ROLE_ADMIN(new SimpleGrantedAuthority("ROLE_ADMIN")); private final GrantedAuthority grantedAuthority; - - public GrantedAuthority getGrantedAuthority() { - return grantedAuthority; - } } \ No newline at end of file diff --git a/src/main/java/kr/ac/hs/oing/member/dto/bundle/MemberLoginBundle.java b/src/main/java/kr/ac/hs/oing/member/dto/bundle/MemberLoginBundle.java index 958cf09..5872a20 100644 --- a/src/main/java/kr/ac/hs/oing/member/dto/bundle/MemberLoginBundle.java +++ b/src/main/java/kr/ac/hs/oing/member/dto/bundle/MemberLoginBundle.java @@ -3,27 +3,14 @@ import kr.ac.hs.oing.member.domain.vo.Nickname; import kr.ac.hs.oing.member.domain.vo.Role; import lombok.Builder; +import lombok.Getter; +@Getter @Builder public class MemberLoginBundle { + private final Long id; private final Nickname nickname; private final Role role; private final String clubName; - - public Long getId() { - return id; - } - - public Nickname getNickname() { - return nickname; - } - - public Role getRole() { - return role; - } - - public String getClubName() { - return clubName; - } } diff --git a/src/main/java/kr/ac/hs/oing/member/dto/bundle/MemberSignBundle.java b/src/main/java/kr/ac/hs/oing/member/dto/bundle/MemberSignBundle.java index 573dc7d..9cb8e10 100644 --- a/src/main/java/kr/ac/hs/oing/member/dto/bundle/MemberSignBundle.java +++ b/src/main/java/kr/ac/hs/oing/member/dto/bundle/MemberSignBundle.java @@ -2,32 +2,24 @@ import kr.ac.hs.oing.member.domain.vo.*; import lombok.Builder; +import lombok.Getter; -@Builder +@Getter public class MemberSignBundle { + private final Email email; private final Password password; private final Name name; private final Nickname nickname; private final PhoneNumber phoneNumber; - public Email getEmail() { - return email; - } - - public Password getPassword() { - return password; - } - - public Name getName() { - return name; - } - - public Nickname getNickname() { - return nickname; - } - - public PhoneNumber getPhoneNumber() { - return phoneNumber; + @Builder + public MemberSignBundle(String email, String password, String name, + String nickname, String phoneNumber) { + this.email = new Email(email); + this.password = new Password(password); + this.name = new Name(name); + this.nickname = new Nickname(nickname); + this.phoneNumber = new PhoneNumber(phoneNumber); } } diff --git a/src/main/java/kr/ac/hs/oing/member/dto/bundle/MemberUpdateBundle.java b/src/main/java/kr/ac/hs/oing/member/dto/bundle/MemberUpdateBundle.java index 4114e49..1dfd8de 100644 --- a/src/main/java/kr/ac/hs/oing/member/dto/bundle/MemberUpdateBundle.java +++ b/src/main/java/kr/ac/hs/oing/member/dto/bundle/MemberUpdateBundle.java @@ -5,27 +5,21 @@ import kr.ac.hs.oing.member.domain.vo.Password; import kr.ac.hs.oing.member.domain.vo.PhoneNumber; import lombok.Builder; +import lombok.Getter; -@Builder +@Getter public class MemberUpdateBundle { + private final Email email; private final Password password; private final Nickname nickname; private final PhoneNumber phoneNumber; - public Email getEmail() { - return email; - } - - public Password getPassword() { - return password; - } - - public Nickname getNickname() { - return nickname; - } - - public PhoneNumber getPhoneNumber() { - return phoneNumber; + @Builder + public MemberUpdateBundle(String email, String password, String nickname, String phoneNumber) { + this.email = new Email(email); + this.password = new Password(password); + this.nickname = new Nickname(nickname); + this.phoneNumber = new PhoneNumber(phoneNumber); } } \ No newline at end of file diff --git a/src/main/java/kr/ac/hs/oing/member/dto/request/MemberSignRequest.java b/src/main/java/kr/ac/hs/oing/member/dto/request/MemberSignRequest.java index 2880220..a964193 100644 --- a/src/main/java/kr/ac/hs/oing/member/dto/request/MemberSignRequest.java +++ b/src/main/java/kr/ac/hs/oing/member/dto/request/MemberSignRequest.java @@ -1,29 +1,16 @@ package kr.ac.hs.oing.member.dto.request; +import lombok.AccessLevel; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Getter +@NoArgsConstructor(access = AccessLevel.PRIVATE) public class MemberSignRequest { + private String email; private String password; private String name; private String nickname; private String phoneNumber; - - public String getEmail() { - return email; - } - - public String getPassword() { - return password; - } - - public String getName() { - return name; - } - - public String getNickname() { - return nickname; - } - - public String getPhoneNumber() { - return phoneNumber; - } -} +} \ No newline at end of file diff --git a/src/main/java/kr/ac/hs/oing/member/dto/request/MemberUpdateRequest.java b/src/main/java/kr/ac/hs/oing/member/dto/request/MemberUpdateRequest.java index ed429f8..556e8fe 100644 --- a/src/main/java/kr/ac/hs/oing/member/dto/request/MemberUpdateRequest.java +++ b/src/main/java/kr/ac/hs/oing/member/dto/request/MemberUpdateRequest.java @@ -1,19 +1,14 @@ package kr.ac.hs.oing.member.dto.request; +import lombok.AccessLevel; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Getter +@NoArgsConstructor(access = AccessLevel.PRIVATE) public class MemberUpdateRequest { + private String password; private String nickname; private String phoneNumber; - - public String getPassword() { - return password; - } - - public String getNickname() { - return nickname; - } - - public String getPhoneNumber() { - return phoneNumber; - } -} +} \ No newline at end of file diff --git a/src/main/java/kr/ac/hs/oing/member/infrastructure/MemberRepository.java b/src/main/java/kr/ac/hs/oing/member/infrastructure/MemberRepository.java index 7d3a668..f284d37 100644 --- a/src/main/java/kr/ac/hs/oing/member/infrastructure/MemberRepository.java +++ b/src/main/java/kr/ac/hs/oing/member/infrastructure/MemberRepository.java @@ -11,6 +11,7 @@ @Repository public interface MemberRepository extends JpaRepository { + Optional findOneWithAuthoritiesByEmail(Email email); boolean existsByEmail(Email email); diff --git a/src/main/java/kr/ac/hs/oing/member/presentation/MemberController.java b/src/main/java/kr/ac/hs/oing/member/presentation/MemberController.java index 7914c37..0b2005f 100644 --- a/src/main/java/kr/ac/hs/oing/member/presentation/MemberController.java +++ b/src/main/java/kr/ac/hs/oing/member/presentation/MemberController.java @@ -5,6 +5,7 @@ import kr.ac.hs.oing.auth.SecurityUtils; import kr.ac.hs.oing.common.converter.ResponseConverter; import kr.ac.hs.oing.common.dto.ResponseDto; +import kr.ac.hs.oing.common.dto.ResponseDto.ResponseDtoV1; import kr.ac.hs.oing.common.dto.ResponseMessage; import kr.ac.hs.oing.member.application.MemberService; import kr.ac.hs.oing.member.converter.MemberConverter; @@ -18,16 +19,17 @@ @Api("Member") @RestController -@RequestMapping("/api") +@RequestMapping("/api/v1/members") @RequiredArgsConstructor public class MemberController { + private final MemberService memberService; private final MemberConverter memberConverter; private final ResponseConverter responseConverter; @ApiOperation("회원가입") - @PostMapping("/member/sign") - public ResponseEntity createMember(@RequestBody MemberSignRequest request) { + @PostMapping("/sign") + public ResponseEntity createMember(@RequestBody MemberSignRequest request) { MemberSignBundle bundle = memberConverter.toMemberSignBundle(request); memberService.createMember(bundle); @@ -35,9 +37,9 @@ public ResponseEntity createMember(@RequestBody MemberSignRequest r } @ApiOperation("회원수정") - @PutMapping("/member") - public ResponseEntity update(@RequestBody MemberUpdateRequest request) { - String username = SecurityUtils.getCurrentUsername().get(); + @PutMapping + public ResponseEntity update(@RequestBody MemberUpdateRequest request) { + String username = SecurityUtils.getCurrentUsername(); MemberUpdateBundle bundle = memberConverter.toMemberUpdateBundle(username, request);