-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
[Fix] 회원가입 로그인 로직 오류수정
- Loading branch information
Showing
13 changed files
with
342 additions
and
238 deletions.
There are no files selected for viewing
26 changes: 14 additions & 12 deletions
26
src/main/java/com/example/eatmate/app/domain/member/domain/Mbti.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,20 +1,22 @@ | ||
package com.example.eatmate.app.domain.member.domain; | ||
|
||
import com.example.eatmate.global.config.error.ErrorCode; | ||
import com.example.eatmate.global.config.error.exception.CommonException; | ||
import com.example.eatmate.global.config.error.exception.custom.InvalidMbtiException; | ||
import com.fasterxml.jackson.annotation.JsonCreator; | ||
import lombok.Getter; | ||
|
||
|
||
@Getter | ||
public enum Mbti { | ||
ISTJ, ISFJ, INFJ, INTJ, | ||
ISTP, ISFP, INFP, INTP, | ||
ESTP, ESFP, ENFP, ENTP, | ||
ESTJ, ESFJ, ENFJ, ENTJ; | ||
ISTJ("ISTJ"), ISFJ("ISFJ"), INFJ("INFJ"), INTJ("INTJ"), | ||
ISTP("ISTP"), ISFP("ISFP"), INFP("INFP"), INTP("INTP"), | ||
ESTP("ESTP"), ESFP("ESFP"), ENFP("ENFP"), ENTP("ENTP"), | ||
ESTJ("ESTJ"), ESFJ("ESFJ"), ENFJ("ENFJ"), ENTJ("ENTJ"); | ||
|
||
private final String mbtiType; | ||
|
||
public static Mbti fromString(String mbti) { | ||
Mbti(String mbtiType) { | ||
this.mbtiType = mbtiType; | ||
} | ||
|
||
try { | ||
return Mbti.valueOf(mbti.toUpperCase()); | ||
} catch (CommonException e) { | ||
throw new InvalidMbtiException(); | ||
} | ||
} | ||
} |
236 changes: 126 additions & 110 deletions
236
src/main/java/com/example/eatmate/app/domain/member/domain/Member.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,121 +1,137 @@ | ||
package com.example.eatmate.app.domain.member.domain; | ||
|
||
|
||
import jakarta.persistence.*; | ||
import lombok.*; | ||
import com.example.eatmate.global.common.BaseTimeEntity; | ||
|
||
import jakarta.persistence.Column; | ||
import jakarta.persistence.Embedded; | ||
import jakarta.persistence.Entity; | ||
import jakarta.persistence.EnumType; | ||
import jakarta.persistence.Enumerated; | ||
import jakarta.persistence.GeneratedValue; | ||
import jakarta.persistence.GenerationType; | ||
import jakarta.persistence.Id; | ||
import lombok.AccessLevel; | ||
import lombok.Builder; | ||
import lombok.Getter; | ||
import lombok.NoArgsConstructor; | ||
import static com.example.eatmate.app.domain.member.domain.Role.USER; | ||
|
||
|
||
@Entity | ||
@Getter | ||
@NoArgsConstructor(access = AccessLevel.PROTECTED) | ||
public class Member extends BaseTimeEntity { | ||
//OAuth로 받을 수 있는거만 false 해놓기 | ||
@Id | ||
@GeneratedValue(strategy = GenerationType.IDENTITY) | ||
private Long memberId; | ||
|
||
@Column(nullable = true) | ||
private String email; | ||
|
||
@Column(nullable = true) | ||
private String name; | ||
|
||
@Column(nullable = true) | ||
private String nickname; | ||
|
||
@Column(nullable = true) | ||
private Long studentNumber; | ||
|
||
@Enumerated(EnumType.STRING) | ||
@Column(nullable = true) | ||
private Mbti mbti; | ||
|
||
@Column(nullable = true) | ||
private String phoneNumber; | ||
|
||
@Column(nullable = true) | ||
private Boolean isActive = true; | ||
|
||
@Enumerated(EnumType.STRING) | ||
@Column(nullable = true) | ||
private Gender gender; | ||
|
||
@Enumerated(EnumType.STRING) | ||
@Column(nullable = true) | ||
private Role role; | ||
|
||
private String refreshToken; | ||
|
||
@Embedded | ||
private BirthDate birthDate; // yyyy-mm-dd 형식으로 받아야함 | ||
|
||
@Builder | ||
public Member(Long memberId, String email, String name, String nickname, Long studentNumber, Mbti mbti, | ||
String phoneNumber, BirthDate birthDate, Boolean isActive, Gender gender, Role role, String refreshToken) { | ||
this.memberId = memberId; | ||
this.email = email; | ||
this.name = name; | ||
this.nickname = nickname; | ||
this.studentNumber = studentNumber; | ||
this.mbti = mbti; | ||
this.phoneNumber = phoneNumber; | ||
this.birthDate = birthDate; | ||
this.isActive = isActive; | ||
this.gender = gender; | ||
this.role = role; | ||
this.refreshToken = refreshToken; | ||
} | ||
|
||
public static Member create(String email, String nickname, Mbti mbti, String phoneNumber, int year, int month, | ||
int day, Gender gender, Long studentNumber) { | ||
// BirthDate 객체 생성 | ||
BirthDate birthDate = BirthDate.of(year, month, day); | ||
|
||
// Member 객체 생성 | ||
return Member.builder() | ||
.email(email) | ||
.nickname(nickname) | ||
.mbti(mbti) | ||
.phoneNumber(phoneNumber) | ||
.birthDate(birthDate) // BirthDate 설정 | ||
.gender(gender) | ||
.studentNumber(studentNumber) | ||
.role(Role.USER) // 기본 역할 설정 | ||
.build(); | ||
} | ||
|
||
public void updateRefreshToken(String updateRefreshToken) { | ||
this.refreshToken = updateRefreshToken; | ||
} | ||
|
||
public void updateNickname(String nickname) { | ||
this.nickname = nickname; | ||
} | ||
|
||
public void updatePhoneNumber(String phoneNumber) { | ||
this.phoneNumber = phoneNumber; | ||
} | ||
|
||
public void updateStudentNumber(Long studentNumber) { | ||
this.studentNumber = studentNumber; | ||
} | ||
|
||
public void updateGender(Gender gender) { | ||
this.gender = gender; | ||
} | ||
|
||
public void activate() { | ||
this.isActive = true; | ||
} | ||
//OAuth로 받을 수 있는거만 false 해놓기 | ||
@Id | ||
@GeneratedValue(strategy = GenerationType.IDENTITY) | ||
private Long memberId; | ||
|
||
@Column(nullable = true) | ||
private String email; | ||
|
||
@Column(nullable = true) | ||
private String name; | ||
|
||
@Column (nullable = true) | ||
private String nickname; | ||
|
||
@Column(nullable = true, name = "student_number") | ||
private Long studentNumber; | ||
|
||
@Enumerated(EnumType.STRING) | ||
@Column(nullable = true) | ||
private Mbti mbti; | ||
|
||
@Column(nullable = true) | ||
private String phoneNumber; | ||
|
||
@Column(nullable = true) | ||
private Boolean isActive = true; | ||
|
||
@Enumerated(EnumType.STRING) | ||
@Column(nullable = true) | ||
private Gender gender; | ||
|
||
@Enumerated(EnumType.STRING) | ||
@Column(nullable = true) | ||
private Role role; | ||
|
||
@Column(name = "refresh_token") | ||
private String refreshToken; | ||
|
||
@Embedded | ||
private BirthDate birthDate; // yyyy-mm-dd 형식으로 받아야함 | ||
|
||
@Builder | ||
private Member(Long memberId, String email, String name, String nickname, Long studentNumber, Mbti mbti, String phoneNumber, BirthDate birthDate, Boolean isActive, Gender gender, Role role, String refreshToken) { | ||
this.memberId = memberId; | ||
this.email = email; | ||
this.name = name; | ||
this.nickname = nickname; | ||
this.studentNumber = studentNumber; | ||
this.mbti = mbti; | ||
this.phoneNumber = phoneNumber; | ||
this.birthDate = birthDate; | ||
this.isActive = isActive; | ||
this.gender = gender; | ||
this.role = role; | ||
this.refreshToken = refreshToken; | ||
} | ||
|
||
public static Member create(String email, String nickname, Mbti mbti, String phoneNumber, int year, int month, int day, Gender gender, Long studentNumber) { | ||
// BirthDate 객체 생성 | ||
BirthDate birthDate = BirthDate.of(year, month, day); | ||
|
||
|
||
// Member 객체 생성 | ||
return Member.builder() | ||
.email(email) | ||
.nickname(nickname) | ||
.mbti(mbti) | ||
.phoneNumber(phoneNumber) | ||
.birthDate(birthDate) // BirthDate 설정 | ||
.gender(gender) | ||
.studentNumber(studentNumber) | ||
.role(USER) // 기본 역할 설정 | ||
.build(); | ||
} | ||
|
||
public void updateMemberDetails(String nickname, String phoneNumber, Long studentNumber, Gender gender, BirthDate birthDate, Mbti mbti) { | ||
this.nickname = nickname; | ||
this.phoneNumber = phoneNumber; | ||
this.studentNumber = studentNumber; | ||
this.gender = gender; | ||
this.role = USER; | ||
this.birthDate = birthDate; | ||
this.isActive = true; | ||
this.mbti = mbti; | ||
} | ||
|
||
public void updateRefreshToken(String updateRefreshToken) { | ||
this.refreshToken = updateRefreshToken; | ||
} | ||
// | ||
// | ||
// public void updateNickname(String nickname) { | ||
// this.nickname = nickname; | ||
// } | ||
// | ||
// | ||
// public void updatePhoneNumber(String phoneNumber) { | ||
// this.phoneNumber = phoneNumber; | ||
// } | ||
// | ||
// public void updateStudentNumber(Long studentNumber) { | ||
// this.studentNumber = studentNumber; | ||
// } | ||
// | ||
// public void updateGender(Gender gender) { | ||
// this.gender = gender; | ||
// } | ||
// | ||
// public void updateBirthDate(BirthDate birthDate) { | ||
// this.birthDate = birthDate; | ||
// } | ||
// | ||
// public void updateMbti(Mbti mbti) { | ||
// this.mbti = mbti; | ||
// } | ||
// | ||
// public void activate() { | ||
// this.isActive = true; | ||
// this.role = Role.USER; | ||
// } | ||
|
||
|
||
} |
13 changes: 7 additions & 6 deletions
13
src/main/java/com/example/eatmate/app/domain/member/domain/repository/MemberRepository.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,14 +1,15 @@ | ||
package com.example.eatmate.app.domain.member.domain.repository; | ||
|
||
import java.util.Optional; | ||
|
||
import com.example.eatmate.app.domain.member.domain.Member; | ||
import org.springframework.data.jpa.repository.JpaRepository; | ||
|
||
import com.example.eatmate.app.domain.member.domain.Member; | ||
import java.util.Optional; | ||
|
||
public interface MemberRepository extends JpaRepository<Member, Long> { | ||
Optional<Member> findByEmail(String email); | ||
|
||
Optional<Member> findByRefreshToken(String refreshToken); | ||
Optional<Member> findByEmail(String email); | ||
Optional<Member> findByRefreshToken(String refreshToken); | ||
boolean existsByNickname(String nickname); | ||
boolean existsByPhoneNumber(String phoneNumber); | ||
boolean existsByStudentNumber(Long studentNumber); | ||
} | ||
|
40 changes: 29 additions & 11 deletions
40
src/main/java/com/example/eatmate/app/domain/member/dto/MemberSignUpRequestDto.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,23 +1,41 @@ | ||
package com.example.eatmate.app.domain.member.dto; | ||
|
||
|
||
import com.example.eatmate.app.domain.member.domain.Gender; | ||
import com.example.eatmate.app.domain.member.domain.Mbti; | ||
|
||
import jakarta.validation.constraints.*; | ||
import lombok.Getter; | ||
import lombok.NoArgsConstructor; | ||
|
||
|
||
@NoArgsConstructor | ||
@Getter | ||
public class MemberSignUpRequestDto { | ||
//생년월일, 성별, 전화번호, MBTI, 학번, 닉네임, 프로필 사진 (일단 패스) | ||
private String email; | ||
private int Year; | ||
private int Month; | ||
private int Day; | ||
private Gender gender; | ||
private String phoneNumber; | ||
private Mbti mbti; | ||
private Long StudentNumber; | ||
private String nickname; | ||
//프로필 사진 추후 추가 예정 | ||
@Min(1900) @Max(2100) | ||
private int year; | ||
|
||
@Min(1) @Max(12) | ||
private int month; | ||
|
||
@Min(1) @Max(31) | ||
private int day; | ||
|
||
@NotNull(message = "성별 선택은 필수 항목입니다.") | ||
private Gender gender; | ||
|
||
@NotNull(message = "전화번호 입력은 필수입니다.") | ||
@Pattern(regexp = "^010\\d{8}$", message = "전화번호는 010으로 시작하며 11자리 숫자여야 합니다.") | ||
private String phoneNumber; | ||
|
||
private Mbti mbti; | ||
|
||
@NotNull(message = "학번 입력은 필수입니다.") | ||
@Digits(integer = 9, fraction = 0, message = "9자리의 학번을 입력해주세요. 예 )202512345") | ||
private Long studentNumber; | ||
|
||
@Pattern(regexp = "^[가-힣a-zA-Z0-9]{2,12}$", message = "닉네임은 한글, 영문, 숫자로 이루어진 2~12자여야 하며 공백이 없어야 합니다.") | ||
private String nickname; | ||
|
||
|
||
} |
Oops, something went wrong.