diff --git a/src/main/java/com/seveneleven/devlens/domain/member/entity/Company.java b/src/main/java/com/seveneleven/devlens/domain/member/entity/Company.java index 5d48e1d0..ce508fb1 100644 --- a/src/main/java/com/seveneleven/devlens/domain/member/entity/Company.java +++ b/src/main/java/com/seveneleven/devlens/domain/member/entity/Company.java @@ -6,6 +6,9 @@ import jakarta.persistence.*; import lombok.*; +import java.util.ArrayList; +import java.util.List; + @Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) @@ -20,6 +23,9 @@ public class Company extends BaseEntity { @Column(name = "company_name", nullable = false, length = 255) private String companyName; // 회사명 + @OneToMany(mappedBy = "company", cascade = CascadeType.ALL, orphanRemoval = true) + private List departments = new ArrayList<>(); // 부서 리스트 + @Column(name = "representative_name", nullable = false, length = 100) private String representativeName; // 대표자명 @@ -46,4 +52,49 @@ public class Company extends BaseEntity { @Column(name = "is_active", nullable = false) @Enumerated(EnumType.STRING) private YN isActive = YN.Y; // 사용 여부 + + + // 생성 메서드 + public static Company createCompany( String companyName, String representativeName, String representativeContact, String representativeEmail, + String address, BusinessType businessType, String businessRegistrationNumber, YN representativeImageExists) + { + Company company = new Company(); + company.address = address; + company.companyName = companyName; + company.businessType = businessType; + company.representativeName = representativeName; + company.representativeEmail = representativeEmail; + company.representativeContact = representativeContact; + company.businessRegistrationNumber = businessRegistrationNumber; + company.representativeImageExists = representativeImageExists != null ? representativeImageExists : YN.N; + return company; + } + + // 수정 메서드 + public void updateCompany(String representativeName, String representativeContact, String representativeEmail, + String address, YN representativeImageExists) { + this.address = address; + this.representativeName = representativeName; + this.representativeEmail = representativeEmail; + this.representativeContact = representativeContact; + this.representativeImageExists = representativeImageExists; + + } + + // 삭제 메서드 + public void deleteCompany() { + this.isActive = YN.N; + } + + // 부서 추가 메서드 + public void addDepartment(Department department) { + this.departments.add(department); + department.setCompany(this); + } + + // 부서 삭제 메서드 + public void removeDepartment(Department department) { + this.departments.remove(department); + department.setCompany(null); + } } \ No newline at end of file diff --git a/src/main/java/com/seveneleven/devlens/domain/member/entity/Department.java b/src/main/java/com/seveneleven/devlens/domain/member/entity/Department.java index 0cc02c21..c134b372 100644 --- a/src/main/java/com/seveneleven/devlens/domain/member/entity/Department.java +++ b/src/main/java/com/seveneleven/devlens/domain/member/entity/Department.java @@ -5,6 +5,9 @@ import jakarta.persistence.*; import lombok.*; +import java.util.ArrayList; +import java.util.List; + @Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) @@ -20,6 +23,9 @@ public class Department extends BaseEntity { @JoinColumn(name = "company_id", nullable = false, referencedColumnName = "id") private Company company; + @OneToMany(mappedBy = "department", cascade = CascadeType.ALL, orphanRemoval = true) + private List positions = new ArrayList<>(); // 부서에 속한 직책 리스트 + @Column(name = "department_name", nullable = false, length = 50) private String departmentName; @@ -29,4 +35,35 @@ public class Department extends BaseEntity { @Column(name = "is_active", nullable = false) @Enumerated(EnumType.STRING) private YN isActive = YN.Y; + + // 생성 메서드 + public static Department createDepartment(Company company, String departmentName, String description) { + Department department = new Department(); + department.company = company; + department.description = description; + department.departmentName = departmentName; + return department; + } + + // 회사 설정 메서드 + public void setCompany(Company company) { + this.company = company; + } + + // 직책 추가 메서드 + public void addPosition(Position position) { + this.positions.add(position); + position.setDepartment(this); + } + + // 직책 삭제 메서드 + public void removePosition(Position position) { + this.positions.remove(position); + position.setDepartment(null); + } + + // 삭제 메서드 + public void deleteDepartment() { + this.isActive = YN.N; + } } diff --git a/src/main/java/com/seveneleven/devlens/domain/member/entity/Member.java b/src/main/java/com/seveneleven/devlens/domain/member/entity/Member.java index 15a325e1..d514c2ac 100644 --- a/src/main/java/com/seveneleven/devlens/domain/member/entity/Member.java +++ b/src/main/java/com/seveneleven/devlens/domain/member/entity/Member.java @@ -48,7 +48,7 @@ public class Member extends BaseEntity { @Column(name = "email", nullable = false, length = 100) private String email; // 이메일 - @Column(name = "birth_date") + @Column(name = "date_of_birth") private LocalDate birthDate; // 생년월일 @Column(name = "phone_number", length = 20) @@ -62,9 +62,8 @@ public class Member extends BaseEntity { // 생성 메서드 - public static Member createMember(String loginId, String password, Company companyId, Role role, - YN profileImageExists, String name, String email, LocalDate birthDate, - String phoneNumber, Long departmentId, Long positionId) { + public static Member createMember(String loginId, String password, Company companyId, Role role, String name, String email, + LocalDate birthDate, String phoneNumber, Long departmentId, Long positionId) { Member member = new Member(); member.name = name; member.role = role; @@ -76,17 +75,17 @@ public static Member createMember(String loginId, String password, Company compa member.phoneNumber = phoneNumber; member.positionId = positionId; member.departmentId = departmentId; - member.profileImageExists = profileImageExists; return member; } // 업데이트 메서드 - public void updateMember(String password, String phoneNumber, Company company, Long departmentId, Long positionId) { + public void updateMember(String password, String phoneNumber, Company company, Long departmentId, Long positionId, YN profileImageExists) { this.company = company; this.password = password; this.phoneNumber = phoneNumber; this.departmentId = departmentId; this.positionId = positionId; + this.profileImageExists = profileImageExists; } // 삭제 메서드 diff --git a/src/main/java/com/seveneleven/devlens/domain/member/entity/MemberPasswordResetHistory.java b/src/main/java/com/seveneleven/devlens/domain/member/entity/MemberPasswordResetHistory.java index 31acfb69..e53a65c0 100644 --- a/src/main/java/com/seveneleven/devlens/domain/member/entity/MemberPasswordResetHistory.java +++ b/src/main/java/com/seveneleven/devlens/domain/member/entity/MemberPasswordResetHistory.java @@ -23,12 +23,25 @@ public class MemberPasswordResetHistory extends BaseEntity { @Column(name = "password", nullable = false, length = 100) private String password; // 비밀번호 - @Column(name = "change_date", nullable = false) - private LocalDateTime changeDate; // 변경일시 + @Column(name = "changed_date", nullable = false) + private LocalDateTime changedDate; // 변경일시 @Column(name = "changer", nullable = false, length = 100) private String changer; // 변경자 - @Column(name = "change_ip", nullable = false, length = 50) - private String changeIp; // 변경 IP + @Column(name = "changed_ip", nullable = false, length = 50) + private String changedIp; // 변경 IP + + + // 생성 메서드 + public static MemberPasswordResetHistory createPwdHistory( Long memberId, String password, String changer, String changedIp ) { + MemberPasswordResetHistory history = new MemberPasswordResetHistory(); + history.memberId = memberId; + history.password = password; + history.changer = changer; + history.changedIp = changedIp; + history.changedDate = LocalDateTime.now(); + return history; + } + } \ No newline at end of file diff --git a/src/main/java/com/seveneleven/devlens/domain/member/entity/MemberProfileHistory.java b/src/main/java/com/seveneleven/devlens/domain/member/entity/MemberProfileHistory.java index e1332414..cd8b27b0 100644 --- a/src/main/java/com/seveneleven/devlens/domain/member/entity/MemberProfileHistory.java +++ b/src/main/java/com/seveneleven/devlens/domain/member/entity/MemberProfileHistory.java @@ -1,6 +1,7 @@ package com.seveneleven.devlens.domain.member.entity; import com.seveneleven.devlens.domain.member.constant.Role; +import com.seveneleven.devlens.domain.member.constant.YN; import com.seveneleven.devlens.global.entity.BaseEntity; import jakarta.persistence.*; import lombok.*; @@ -37,18 +38,39 @@ public class MemberProfileHistory extends BaseEntity { @Column(name = "email", nullable = false, length = 100) private String email; // 이메일 - @Column(name = "birth_date") + @Column(name = "date_of_birth") private LocalDate birthDate; // 생년월일 @Column(name = "phone_number", length = 20) private String phoneNumber; // 전화번호 @Column(name = "profile_image_exists", nullable = false) - private Boolean profileImageExists; // 프로필 이미지 유무 + @Enumerated(EnumType.STRING) + private YN profileImageExists; // 프로필 이미지 유무 @Column(name = "department", length = 100) private String department; // 부서명 @Column(name = "position", length = 100) private String position; // 직책 + + + + public static MemberProfileHistory createProfileHistory(Member member, String department, String position) { + MemberProfileHistory history = new MemberProfileHistory(); + history.memberId = member.getId(); + history.memberEmail = member.getEmail(); + history.companyId = member.getCompany().getId(); + history.role = member.getRole(); + history.name = member.getName(); + history.email = member.getEmail(); + history.birthDate = member.getBirthDate(); + history.phoneNumber = member.getPhoneNumber(); + history.department = department; + history.position = position; + history.profileImageExists = member.getProfileImageExists(); + return history; + } + + } \ No newline at end of file diff --git a/src/main/java/com/seveneleven/devlens/domain/member/entity/Position.java b/src/main/java/com/seveneleven/devlens/domain/member/entity/Position.java index 8cd98988..1d90ac3f 100644 --- a/src/main/java/com/seveneleven/devlens/domain/member/entity/Position.java +++ b/src/main/java/com/seveneleven/devlens/domain/member/entity/Position.java @@ -30,4 +30,24 @@ public class Position extends BaseEntity { @Enumerated(EnumType.STRING) private YN isActive = YN.Y; + + // 생성 메서드 + public static Position createPosition( Department department, String positionName, String description) { + Position position = new Position(); + position.department = department; + position.description = description; + position.positionName = positionName; + return position; + } + + // 부서 설정 메서드 + public void setDepartment(Department department) { + this.department = department; + } + + // 삭제 메서드 + public void deletePostion() { + this.isActive = YN.N; + } + } diff --git a/src/main/java/com/seveneleven/devlens/domain/member/entity/Term.java b/src/main/java/com/seveneleven/devlens/domain/member/entity/Term.java index f2881a91..253a3bee 100644 --- a/src/main/java/com/seveneleven/devlens/domain/member/entity/Term.java +++ b/src/main/java/com/seveneleven/devlens/domain/member/entity/Term.java @@ -1,9 +1,11 @@ package com.seveneleven.devlens.domain.member.entity; +import com.seveneleven.devlens.domain.member.constant.TermsStatus; import com.seveneleven.devlens.domain.member.constant.YN; import com.seveneleven.devlens.global.entity.BaseEntity; import jakarta.persistence.*; import lombok.*; +import org.joda.time.DateTime; @Entity @Getter @@ -24,5 +26,28 @@ public class Term extends BaseEntity { @Column(name = "is_required", nullable = false) @Enumerated(EnumType.STRING) - private YN isRequired; // 필수 여부 + private YN isRequired = YN.N; // 필수 여부 + + @Column(name = "expiration_date") + private DateTime expiration_date; // 만료 일자 + + @Column(name = "status", length = 50) + @Enumerated(EnumType.STRING) + private TermsStatus status; // 상태 + + + // 생성 메서드 + public static Term createTerm(String title, String content, YN isRequired, TermsStatus status) { + Term term = new Term(); + term.title = title; + term.content = content; + term.isRequired = isRequired; + term.status = status; + return term; + } + + // 상태 변경 메서드 + public void updateStatus(TermsStatus status) { + this.status = status; + } } \ No newline at end of file diff --git a/src/main/java/com/seveneleven/devlens/domain/member/entity/TermsAgreementHistory.java b/src/main/java/com/seveneleven/devlens/domain/member/entity/TermsAgreementHistory.java index 469f2fce..65aeead4 100644 --- a/src/main/java/com/seveneleven/devlens/domain/member/entity/TermsAgreementHistory.java +++ b/src/main/java/com/seveneleven/devlens/domain/member/entity/TermsAgreementHistory.java @@ -20,17 +20,25 @@ public class TermsAgreementHistory extends BaseEntity { @Column(name = "term_id") private Long termId; // 약관 이력 ID - @Column(name = "terms_title", nullable = false) - private Long termsTitle; // 약관 항목 + @Column(name = "term_title", nullable = false) + private String termTitle; // 약관 항목 - @Column(name = "member_email", nullable = false) - private Long memberEmail; // 회원 ID + @Column(name = "member_id", nullable = false) + private Long memberId; // 회원 ID - @Column(name = "agreement_status", nullable = false) + @Column(name = "is_agree", nullable = false) @Enumerated(EnumType.STRING) - private YN agreementStatus; // 약관 동의 여부 + private YN is_agree; // 약관 동의 여부 + + + // 생성 메서드 + public static TermsAgreementHistory createTermsAgreementHistory( Long termId, String termTitle, Long memberId, YN is_agree) { + TermsAgreementHistory termsAgreeHistory = new TermsAgreementHistory(); + termsAgreeHistory.termId = termId; + termsAgreeHistory.termTitle = termTitle; + termsAgreeHistory.memberId = memberId; + termsAgreeHistory.is_agree = is_agree; + return termsAgreeHistory; + } - @Column(name = "status", length = 50) - @Enumerated(EnumType.STRING) - private TermsStatus status; // 상태 } \ No newline at end of file