Skip to content

Commit 0b8fa95

Browse files
authored
Merge pull request #7 from T1F5/feature/#6
feat: 회원 엔티티 구현(1차)
2 parents cf40a25 + d813239 commit 0b8fa95

File tree

13 files changed

+182
-0
lines changed

13 files changed

+182
-0
lines changed

src/main/java/com/unit/daybook/domain/auth/controller/.gitkeep

Whitespace-only changes.

src/main/java/com/unit/daybook/domain/auth/service/.gitkeep

Whitespace-only changes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package com.unit.daybook.domain.common.model;
2+
3+
import java.time.LocalDateTime;
4+
5+
import org.springframework.data.annotation.CreatedDate;
6+
import org.springframework.data.annotation.LastModifiedDate;
7+
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
8+
9+
import jakarta.persistence.Column;
10+
import jakarta.persistence.EntityListeners;
11+
import jakarta.persistence.MappedSuperclass;
12+
import lombok.Getter;
13+
14+
@Getter
15+
@MappedSuperclass
16+
@EntityListeners(AuditingEntityListener.class)
17+
public abstract class BaseTimeEntity {
18+
19+
@Column(updatable = false)
20+
@CreatedDate
21+
private LocalDateTime createdAt;
22+
23+
@Column @LastModifiedDate
24+
private LocalDateTime updatedAt;
25+
}
26+

src/main/java/com/unit/daybook/domain/member/controller/.gitkeep

Whitespace-only changes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
package com.unit.daybook.domain.member.domain;
2+
3+
import java.time.LocalDateTime;
4+
5+
import com.unit.daybook.domain.common.model.BaseTimeEntity;
6+
7+
import jakarta.persistence.Column;
8+
import jakarta.persistence.Embedded;
9+
import jakarta.persistence.Entity;
10+
import jakarta.persistence.EnumType;
11+
import jakarta.persistence.Enumerated;
12+
import jakarta.persistence.GeneratedValue;
13+
import jakarta.persistence.GenerationType;
14+
import jakarta.persistence.Id;
15+
import lombok.AccessLevel;
16+
import lombok.Builder;
17+
import lombok.Getter;
18+
import lombok.NoArgsConstructor;
19+
20+
@Getter
21+
@Entity
22+
@NoArgsConstructor(access = AccessLevel.PROTECTED)
23+
public class Member extends BaseTimeEntity {
24+
25+
@Id
26+
@GeneratedValue(strategy = GenerationType.IDENTITY)
27+
@Column(name = "member_id")
28+
private Long id;
29+
30+
private String nickname;
31+
32+
@Embedded
33+
private OauthInfo oauthInfo;
34+
35+
@Enumerated(EnumType.STRING)
36+
private MemberStatus status;
37+
38+
@Enumerated(EnumType.STRING)
39+
private MemberRole role;
40+
41+
private LocalDateTime lastLoginAt;
42+
43+
44+
@Builder(access = AccessLevel.PRIVATE)
45+
private Member(
46+
String nickname,
47+
OauthInfo oauthInfo,
48+
MemberStatus status,
49+
MemberRole role,
50+
LocalDateTime lastLoginAt) {
51+
this.nickname = nickname;
52+
this.oauthInfo = oauthInfo;
53+
this.status = status;
54+
this.role = role;
55+
this.lastLoginAt = lastLoginAt;
56+
}
57+
58+
public static Member createNormalMember(OauthInfo oauthInfo, String nickname) {
59+
return Member.builder()
60+
.nickname(nickname)
61+
.oauthInfo(oauthInfo)
62+
.status(MemberStatus.NORMAL)
63+
.role(MemberRole.USER)
64+
.build();
65+
}
66+
67+
public void updateLastLoginAt() {
68+
this.lastLoginAt = LocalDateTime.now();
69+
}
70+
71+
public void updateNickname() {
72+
this.nickname = nickname;
73+
}
74+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.unit.daybook.domain.member.domain;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Getter;
5+
6+
@Getter
7+
@AllArgsConstructor
8+
public enum MemberRole {
9+
USER("ROLE_USER"),
10+
ADMIN("ROLE_ADMIN");
11+
12+
private final String value;
13+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.unit.daybook.domain.member.domain;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Getter;
5+
6+
@Getter
7+
@AllArgsConstructor
8+
public enum MemberStatus {
9+
NORMAL("NORMAL"),
10+
DELETED("DELETED"),
11+
FORBIDDEN("FORBIDDEN");
12+
13+
private final String value;
14+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.unit.daybook.domain.member.domain;
2+
3+
import jakarta.persistence.Embeddable;
4+
import lombok.AccessLevel;
5+
import lombok.Builder;
6+
import lombok.Getter;
7+
import lombok.NoArgsConstructor;
8+
9+
@Embeddable
10+
@Getter
11+
@NoArgsConstructor(access = AccessLevel.PROTECTED)
12+
public class OauthInfo {
13+
14+
private String oauthId;
15+
private String oauthProvider;
16+
private String oauthEmail;
17+
18+
@Builder(access = AccessLevel.PRIVATE)
19+
private OauthInfo(String oauthId, String oauthProvider, String oauthEmail) {
20+
this.oauthId = oauthId;
21+
this.oauthProvider = oauthProvider;
22+
this.oauthEmail = oauthEmail;
23+
}
24+
25+
public static OauthInfo createOauthInfo(
26+
String oauthId, String oauthProvider, String oauthEmail) {
27+
return OauthInfo.builder()
28+
.oauthId(oauthId)
29+
.oauthProvider(oauthProvider)
30+
.oauthEmail(oauthEmail)
31+
.build();
32+
}
33+
}

src/main/java/com/unit/daybook/domain/member/dto/request/.gitkeep

Whitespace-only changes.

src/main/java/com/unit/daybook/domain/member/dto/response/.gitkeep

Whitespace-only changes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.unit.daybook.domain.member.repository;
2+
3+
import org.springframework.data.jpa.repository.JpaRepository;
4+
5+
import com.unit.daybook.domain.member.domain.Member;
6+
7+
public interface MemberRepository extends JpaRepository<Member, Long>, MemberRepositoryCustom {
8+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package com.unit.daybook.domain.member.repository;
2+
3+
public interface MemberRepositoryCustom {
4+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.unit.daybook.domain.member.repository;
2+
3+
import org.springframework.stereotype.Repository;
4+
5+
import lombok.RequiredArgsConstructor;
6+
7+
@Repository
8+
@RequiredArgsConstructor
9+
public class MemberRepositoryImpl implements MemberRepositoryCustom {
10+
}

0 commit comments

Comments
 (0)