Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor: 엔티티 필드 및 생성자 메서드 시그니처 변경 #850

Merged
merged 17 commits into from
Feb 2, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,11 @@ public class IssuedCoupon extends BaseEntity {
@Column(name = "issued_coupon_id")
private Long id;

@Comment("회수 여부")
private Boolean hasRevoked;

private LocalDateTime usedAt;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "coupon_id")
private Coupon coupon;
Expand All @@ -40,16 +45,11 @@ public class IssuedCoupon extends BaseEntity {
@JoinColumn(name = "member_id")
private Member member;

@Comment("회수 여부")
private Boolean hasRevoked;

private LocalDateTime usedAt;

@Builder(access = AccessLevel.PRIVATE)
private IssuedCoupon(Coupon coupon, Member member, Boolean hasRevoked) {
private IssuedCoupon(Boolean hasRevoked, Coupon coupon, Member member) {
this.hasRevoked = hasRevoked;
this.coupon = coupon;
this.member = member;
this.hasRevoked = hasRevoked;
}

public static IssuedCoupon create(Coupon coupon, Member member) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@ public class Member extends BaseEntity {
@Column(name = "member_id")
private Long id;

@Enumerated(EnumType.STRING)
private MemberStatus status;

@Enumerated(EnumType.STRING)
private MemberRole role;

Expand All @@ -42,9 +45,6 @@ public class Member extends BaseEntity {
@Enumerated(EnumType.STRING)
private MemberStudyRole studyRole;

@Enumerated(EnumType.STRING)
private MemberStatus status;

private String name;

private String studentId;
Expand All @@ -54,66 +54,66 @@ public class Member extends BaseEntity {

private String email;

private String univEmail;

private String phone;

private String discordId;

private String discordUsername;

private String nickname;

private String discordId;

@Column(nullable = false)
private String oauthId;

private LocalDateTime lastLoginAt;

private String univEmail;

@Embedded
private AssociateRequirement associateRequirement;

@Builder(access = AccessLevel.PRIVATE)
private Member(
MemberStatus status,
MemberRole role,
MemberManageRole manageRole,
MemberStudyRole studyRole,
MemberStatus status,
String name,
String studentId,
Department department,
String email,
String univEmail,
String phone,
String discordUsername,
String nickname,
String oauthId,
LocalDateTime lastLoginAt,
String univEmail,
AssociateRequirement associateRequirement) {
this.status = status;
this.role = role;
this.manageRole = manageRole;
this.studyRole = studyRole;
this.status = status;
this.name = name;
this.studentId = studentId;
this.department = department;
this.email = email;
this.univEmail = univEmail;
this.phone = phone;
this.discordUsername = discordUsername;
this.nickname = nickname;
this.oauthId = oauthId;
this.lastLoginAt = lastLoginAt;
this.univEmail = univEmail;
this.associateRequirement = associateRequirement;
}

public static Member createGuest(String oauthId) {
AssociateRequirement associateRequirement = AssociateRequirement.unsatisfied();
return Member.builder()
.oauthId(oauthId)
.status(MemberStatus.NORMAL)
.role(GUEST)
.manageRole(NONE)
.studyRole(STUDENT)
.status(MemberStatus.NORMAL)
.oauthId(oauthId)
.associateRequirement(associateRequirement)
.build();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@ public class Membership extends BaseEntity {
@Column(name = "membership_id")
private Long id;

@Embedded
private RegularRequirement regularRequirement;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "member_id")
private Member member;
Expand All @@ -42,14 +45,11 @@ public class Membership extends BaseEntity {
@JoinColumn(name = "recruitment_round_id")
private RecruitmentRound recruitmentRound;

@Embedded
private RegularRequirement regularRequirement;

@Builder(access = AccessLevel.PRIVATE)
private Membership(Member member, RecruitmentRound recruitmentRound, RegularRequirement regularRequirement) {
private Membership(RegularRequirement regularRequirement, Member member, RecruitmentRound recruitmentRound) {
this.regularRequirement = regularRequirement;
this.member = member;
this.recruitmentRound = recruitmentRound;
this.regularRequirement = regularRequirement;
}

public static Membership create(Member member, RecruitmentRound recruitmentRound) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ public void createPendingOrder(OrderCreateRequest request) {

orderValidator.validatePendingOrderCreate(membership, issuedCoupon, moneyInfo, currentMember);

Order order = Order.createPending(request.orderNanoId(), membership, issuedCoupon, moneyInfo);
Order order = Order.createPending(request.orderNanoId(), moneyInfo, membership, issuedCoupon);

orderRepository.save(order);

Expand Down Expand Up @@ -168,7 +168,7 @@ public void createFreeOrder(OrderCreateRequest request) {

LocalDateTime now = LocalDateTime.now();

Order order = Order.createFree(request.orderNanoId(), membership, optionalIssuedCoupon.orElse(null), moneyInfo);
Order order = Order.createFree(request.orderNanoId(), moneyInfo, membership, optionalIssuedCoupon.orElse(null));
optionalIssuedCoupon.ifPresent(issuedCoupon -> issuedCoupon.use(now));

orderRepository.save(order);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,15 +54,15 @@ public class Order extends BaseEntity {
@Comment("사용하려는 발급쿠폰 ID")
private Long issuedCouponId;

@Embedded
private MoneyInfo moneyInfo;

private String paymentKey;

private ZonedDateTime approvedAt;

private ZonedDateTime canceledAt;

@Embedded
private MoneyInfo moneyInfo;

@Builder(access = AccessLevel.PRIVATE)
private Order(
OrderStatus status,
Expand All @@ -88,7 +88,7 @@ private Order(
* 쿠폰의 경우 사용 여부를 선택할 수 있습니다.
*/
public static Order createPending(
String nanoId, Membership membership, @Nullable IssuedCoupon issuedCoupon, MoneyInfo moneyInfo) {
String nanoId, MoneyInfo moneyInfo, Membership membership, @Nullable IssuedCoupon issuedCoupon) {
return Order.builder()
.status(OrderStatus.PENDING)
.nanoId(nanoId)
Expand All @@ -101,7 +101,7 @@ public static Order createPending(
}

public static Order createFree(
String nanoId, Membership membership, @Nullable IssuedCoupon issuedCoupon, MoneyInfo moneyInfo) {
String nanoId, MoneyInfo moneyInfo, Membership membership, @Nullable IssuedCoupon issuedCoupon) {
validateFreeOrder(moneyInfo);
return Order.builder()
.status(OrderStatus.COMPLETED)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,11 @@ public void createRecruitment(RecruitmentCreateRequest request) {
recruitmentValidator.validateRecruitmentCreate(isRecruitmentOverlap);

Recruitment recruitment = Recruitment.create(
request.academicYear(),
request.semesterType(),
Money.from(request.fee()),
request.feeName(),
Period.of(request.semesterStartDate(), request.semesterEndDate()));
Money.from(request.fee()),
Period.of(request.semesterStartDate(), request.semesterEndDate()),
request.academicYear(),
request.semesterType());
recruitmentRepository.save(recruitment);

log.info("[AdminRecruitmentService] 리쿠르팅 생성: recruitmentId={}", recruitment.getId());
Expand Down Expand Up @@ -82,7 +82,7 @@ public void createRecruitmentRound(RecruitmentRoundCreateRequest request) {
recruitmentRoundsInThisSemester);

RecruitmentRound recruitmentRound = RecruitmentRound.create(
request.name(), Period.of(request.startDate(), request.endDate()), recruitment, request.roundType());
request.name(), request.roundType(), Period.of(request.startDate(), request.endDate()), recruitment);
recruitmentRoundRepository.save(recruitmentRound);

log.info("[AdminRecruitmentService] 모집회차 생성: recruitmentRoundId={}", recruitmentRound.getId());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,31 +20,31 @@ public class Recruitment extends BaseSemesterEntity {
@Column(name = "recruitment_id")
private Long id;

private String feeName;

@Embedded
private Money fee;

private String feeName;

@Embedded
private Period semesterPeriod;

@Builder(access = AccessLevel.PRIVATE)
private Recruitment(
Integer academicYear, SemesterType semesterType, Money fee, String feeName, final Period semesterPeriod) {
String feeName, Money fee, final Period semesterPeriod, Integer academicYear, SemesterType semesterType) {
super(academicYear, semesterType);
this.fee = fee;
this.feeName = feeName;
this.fee = fee;
this.semesterPeriod = semesterPeriod;
}

public static Recruitment create(
Integer academicYear, SemesterType semesterType, Money fee, String feeName, Period semesterPeriod) {
String feeName, Money fee, Period semesterPeriod, Integer academicYear, SemesterType semesterType) {
return Recruitment.builder()
.academicYear(academicYear)
.semesterType(semesterType)
.fee(fee)
.feeName(feeName)
.fee(fee)
.semesterPeriod(semesterPeriod)
.academicYear(academicYear)
.semesterType(semesterType)
.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@ public class RecruitmentRound extends BaseSemesterEntity {
@Column(name = "recruitment_round_id")
private Long id;

@Enumerated(EnumType.STRING)
private RoundType roundType;

private String name;

@Embedded
Expand All @@ -41,32 +44,29 @@ public class RecruitmentRound extends BaseSemesterEntity {
@JoinColumn(name = "recruitment_id")
private Recruitment recruitment;

@Enumerated(EnumType.STRING)
private RoundType roundType;

@Builder(access = AccessLevel.PRIVATE)
private RecruitmentRound(
RoundType roundType,
String name,
final Period period,
Integer academicYear,
SemesterType semesterType,
Recruitment recruitment,
RoundType roundType) {
Integer academicYear,
SemesterType semesterType) {
super(academicYear, semesterType);
this.name = name;
this.roundType = roundType;
this.period = period;
this.recruitment = recruitment;
this.roundType = roundType;
}

public static RecruitmentRound create(String name, Period period, Recruitment recruitment, RoundType roundType) {
public static RecruitmentRound create(String name, RoundType roundType, Period period, Recruitment recruitment) {
return RecruitmentRound.builder()
.roundType(roundType)
.name(name)
.period(period)
.recruitment(recruitment)
.academicYear(recruitment.getAcademicYear())
.semesterType(recruitment.getSemesterType())
.recruitment(recruitment)
.roundType(roundType)
.build();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ public void designateOutstandingStudent(Long studyId, OutstandingStudentRequest

List<Member> outstandingStudents = memberRepository.findAllById(request.studentIds());
List<StudyAchievement> studyAchievements = outstandingStudents.stream()
.map(member -> StudyAchievement.create(member, study, request.achievementType()))
.map(member -> StudyAchievement.create(request.achievementType(), member, study))
.toList();
studyAchievementRepository.saveAll(studyAchievements);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ public void createStudyAnnouncement(Long studyId, StudyAnnouncementCreateUpdateR

studyValidator.validateStudyMentor(currentMember, study);

StudyAnnouncement studyAnnouncement = StudyAnnouncement.create(study, request.title(), request.link());
StudyAnnouncement studyAnnouncement = StudyAnnouncement.create(request.title(), request.link(), study);
studyAnnouncementRepository.save(studyAnnouncement);

log.info("[MentorStudyService] 스터디 공지 생성: studyAnnouncementId={}", studyAnnouncement.getId());
Expand Down
Loading