diff --git a/src/main/java/com/gdschongik/gdsc/domain/coupon/domain/IssuedCoupon.java b/src/main/java/com/gdschongik/gdsc/domain/coupon/domain/IssuedCoupon.java index 4d1511c0b..017f3b23d 100644 --- a/src/main/java/com/gdschongik/gdsc/domain/coupon/domain/IssuedCoupon.java +++ b/src/main/java/com/gdschongik/gdsc/domain/coupon/domain/IssuedCoupon.java @@ -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; @@ -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) { diff --git a/src/main/java/com/gdschongik/gdsc/domain/member/domain/Member.java b/src/main/java/com/gdschongik/gdsc/domain/member/domain/Member.java index 7f3057d00..88b32226b 100644 --- a/src/main/java/com/gdschongik/gdsc/domain/member/domain/Member.java +++ b/src/main/java/com/gdschongik/gdsc/domain/member/domain/Member.java @@ -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; @@ -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; @@ -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(); } diff --git a/src/main/java/com/gdschongik/gdsc/domain/membership/domain/Membership.java b/src/main/java/com/gdschongik/gdsc/domain/membership/domain/Membership.java index 1dac952e2..2b5137ffa 100644 --- a/src/main/java/com/gdschongik/gdsc/domain/membership/domain/Membership.java +++ b/src/main/java/com/gdschongik/gdsc/domain/membership/domain/Membership.java @@ -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; @@ -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) { diff --git a/src/main/java/com/gdschongik/gdsc/domain/order/application/OrderService.java b/src/main/java/com/gdschongik/gdsc/domain/order/application/OrderService.java index 4049538e6..91322cd0a 100644 --- a/src/main/java/com/gdschongik/gdsc/domain/order/application/OrderService.java +++ b/src/main/java/com/gdschongik/gdsc/domain/order/application/OrderService.java @@ -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); @@ -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); diff --git a/src/main/java/com/gdschongik/gdsc/domain/order/domain/Order.java b/src/main/java/com/gdschongik/gdsc/domain/order/domain/Order.java index 08dc19ba1..e3e3f5304 100644 --- a/src/main/java/com/gdschongik/gdsc/domain/order/domain/Order.java +++ b/src/main/java/com/gdschongik/gdsc/domain/order/domain/Order.java @@ -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, @@ -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) @@ -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) diff --git a/src/main/java/com/gdschongik/gdsc/domain/recruitment/application/AdminRecruitmentService.java b/src/main/java/com/gdschongik/gdsc/domain/recruitment/application/AdminRecruitmentService.java index 64cb2e8c8..98b3a5031 100644 --- a/src/main/java/com/gdschongik/gdsc/domain/recruitment/application/AdminRecruitmentService.java +++ b/src/main/java/com/gdschongik/gdsc/domain/recruitment/application/AdminRecruitmentService.java @@ -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()); @@ -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()); diff --git a/src/main/java/com/gdschongik/gdsc/domain/recruitment/domain/Recruitment.java b/src/main/java/com/gdschongik/gdsc/domain/recruitment/domain/Recruitment.java index 83d62f053..635cb33a6 100644 --- a/src/main/java/com/gdschongik/gdsc/domain/recruitment/domain/Recruitment.java +++ b/src/main/java/com/gdschongik/gdsc/domain/recruitment/domain/Recruitment.java @@ -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(); } } diff --git a/src/main/java/com/gdschongik/gdsc/domain/recruitment/domain/RecruitmentRound.java b/src/main/java/com/gdschongik/gdsc/domain/recruitment/domain/RecruitmentRound.java index 7b0b83e55..78751d5ec 100644 --- a/src/main/java/com/gdschongik/gdsc/domain/recruitment/domain/RecruitmentRound.java +++ b/src/main/java/com/gdschongik/gdsc/domain/recruitment/domain/RecruitmentRound.java @@ -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 @@ -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(); } diff --git a/src/main/java/com/gdschongik/gdsc/domain/study/application/MentorStudyAchievementService.java b/src/main/java/com/gdschongik/gdsc/domain/study/application/MentorStudyAchievementService.java index 4b7e032be..e910f701b 100644 --- a/src/main/java/com/gdschongik/gdsc/domain/study/application/MentorStudyAchievementService.java +++ b/src/main/java/com/gdschongik/gdsc/domain/study/application/MentorStudyAchievementService.java @@ -52,7 +52,7 @@ public void designateOutstandingStudent(Long studyId, OutstandingStudentRequest List outstandingStudents = memberRepository.findAllById(request.studentIds()); List studyAchievements = outstandingStudents.stream() - .map(member -> StudyAchievement.create(member, study, request.achievementType())) + .map(member -> StudyAchievement.create(request.achievementType(), member, study)) .toList(); studyAchievementRepository.saveAll(studyAchievements); diff --git a/src/main/java/com/gdschongik/gdsc/domain/study/application/MentorStudyService.java b/src/main/java/com/gdschongik/gdsc/domain/study/application/MentorStudyService.java index c4767496a..84eb98718 100644 --- a/src/main/java/com/gdschongik/gdsc/domain/study/application/MentorStudyService.java +++ b/src/main/java/com/gdschongik/gdsc/domain/study/application/MentorStudyService.java @@ -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()); diff --git a/src/main/java/com/gdschongik/gdsc/domain/study/domain/AssignmentHistory.java b/src/main/java/com/gdschongik/gdsc/domain/study/domain/AssignmentHistory.java index a7384e53c..98100d28d 100644 --- a/src/main/java/com/gdschongik/gdsc/domain/study/domain/AssignmentHistory.java +++ b/src/main/java/com/gdschongik/gdsc/domain/study/domain/AssignmentHistory.java @@ -36,47 +36,47 @@ public class AssignmentHistory extends BaseEntity { @Column(name = "assignment_history_id") private Long id; - @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "study_detail_id") - private StudyDetail studyDetail; + @Enumerated(EnumType.STRING) + private AssignmentSubmissionStatus submissionStatus; - @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "member_id") - private Member member; + @Enumerated(EnumType.STRING) + private SubmissionFailureType submissionFailureType; + + private Integer contentLength; @Column(columnDefinition = "TEXT") private String submissionLink; private String commitHash; - private Integer contentLength; - private LocalDateTime committedAt; - @Enumerated(EnumType.STRING) - private AssignmentSubmissionStatus submissionStatus; + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "study_detail_id") + private StudyDetail studyDetail; - @Enumerated(EnumType.STRING) - private SubmissionFailureType submissionFailureType; + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "member_id") + private Member member; @Builder(access = AccessLevel.PRIVATE) private AssignmentHistory( - StudyDetail studyDetail, - Member member, AssignmentSubmissionStatus submissionStatus, - SubmissionFailureType submissionFailureType) { - this.studyDetail = studyDetail; - this.member = member; + SubmissionFailureType submissionFailureType, + StudyDetail studyDetail, + Member member) { this.submissionStatus = submissionStatus; this.submissionFailureType = submissionFailureType; + this.studyDetail = studyDetail; + this.member = member; } public static AssignmentHistory create(StudyDetail studyDetail, Member member) { return AssignmentHistory.builder() - .studyDetail(studyDetail) - .member(member) .submissionStatus(FAILURE) .submissionFailureType(NOT_SUBMITTED) + .studyDetail(studyDetail) + .member(member) .build(); } diff --git a/src/main/java/com/gdschongik/gdsc/domain/study/domain/Study.java b/src/main/java/com/gdschongik/gdsc/domain/study/domain/Study.java index a9c68ae11..02e143dfc 100644 --- a/src/main/java/com/gdschongik/gdsc/domain/study/domain/Study.java +++ b/src/main/java/com/gdschongik/gdsc/domain/study/domain/Study.java @@ -40,32 +40,20 @@ public class Study extends BaseSemesterEntity { @Column(name = "study_id") private Long id; - private String title; - - @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "member_id") - private Member mentor; - - @Embedded - private Period period; + @Enumerated(EnumType.STRING) + private StudyType studyType; - @Embedded - @AttributeOverride(name = "startDate", column = @Column(name = "application_start_date")) - @AttributeOverride(name = "endDate", column = @Column(name = "application_end_date")) - private Period applicationPeriod; + private String title; - @Comment("총 주차수") - private Long totalWeek; + @Comment("스터디 한줄 소개") + private String introduction; @Comment("스터디 상세 노션 링크(Text)") @Column(columnDefinition = "TEXT") private String notionLink; - @Comment("스터디 한줄 소개") - private String introduction; - - @Enumerated(EnumType.STRING) - private StudyType studyType; + @Comment("총 주차수") + private Long totalWeek; @Comment("스터디 요일") @Enumerated(EnumType.STRING) @@ -77,58 +65,70 @@ public class Study extends BaseSemesterEntity { @Comment("스터디 종료 시간") private LocalTime endTime; + @Embedded + private Period period; + + @Embedded + @AttributeOverride(name = "startDate", column = @Column(name = "application_start_date")) + @AttributeOverride(name = "endDate", column = @Column(name = "application_end_date")) + private Period applicationPeriod; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "member_id") + private Member mentor; + @Builder(access = AccessLevel.PRIVATE) private Study( - Integer academicYear, - SemesterType semesterType, + StudyType studyType, String title, - Member mentor, - Period period, - Period applicationPeriod, Long totalWeek, - StudyType studyType, DayOfWeek dayOfWeek, LocalTime startTime, - LocalTime endTime) { + LocalTime endTime, + Period period, + Period applicationPeriod, + Member mentor, + Integer academicYear, + SemesterType semesterType) { super(academicYear, semesterType); + this.studyType = studyType; this.title = title; - this.mentor = mentor; - this.period = period; - this.applicationPeriod = applicationPeriod; this.totalWeek = totalWeek; - this.studyType = studyType; this.dayOfWeek = dayOfWeek; this.startTime = startTime; this.endTime = endTime; + this.period = period; + this.applicationPeriod = applicationPeriod; + this.mentor = mentor; } public static Study create( - Integer academicYear, - SemesterType semesterType, + StudyType studyType, String title, - Member mentor, - Period period, - Period applicationPeriod, Long totalWeek, - StudyType studyType, DayOfWeek dayOfWeek, LocalTime startTime, - LocalTime endTime) { + LocalTime endTime, + Period period, + Period applicationPeriod, + Member mentor, + Integer academicYear, + SemesterType semesterType) { validateApplicationStartDateBeforeCurriculumStartDate(applicationPeriod.getStartDate(), period.getStartDate()); validateMentorRole(mentor); validateStudyTime(studyType, startTime, endTime); return Study.builder() - .academicYear(academicYear) - .semesterType(semesterType) + .studyType(studyType) .title(title) - .mentor(mentor) - .period(period) - .applicationPeriod(applicationPeriod) .totalWeek(totalWeek) - .studyType(studyType) .dayOfWeek(dayOfWeek) .startTime(startTime) .endTime(endTime) + .period(period) + .applicationPeriod(applicationPeriod) + .mentor(mentor) + .academicYear(academicYear) + .semesterType(semesterType) .build(); } diff --git a/src/main/java/com/gdschongik/gdsc/domain/study/domain/StudyAchievement.java b/src/main/java/com/gdschongik/gdsc/domain/study/domain/StudyAchievement.java index 8555de8da..6e336c454 100644 --- a/src/main/java/com/gdschongik/gdsc/domain/study/domain/StudyAchievement.java +++ b/src/main/java/com/gdschongik/gdsc/domain/study/domain/StudyAchievement.java @@ -30,6 +30,9 @@ public class StudyAchievement extends BaseEntity { @Column(name = "study_achievement_id") private Long id; + @Enumerated(EnumType.STRING) + private AchievementType achievementType; + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "member_id") private Member student; @@ -38,21 +41,18 @@ public class StudyAchievement extends BaseEntity { @JoinColumn(name = "study_id") private Study study; - @Enumerated(EnumType.STRING) - private AchievementType achievementType; - @Builder(access = AccessLevel.PRIVATE) - private StudyAchievement(Member student, Study study, AchievementType achievementType) { + private StudyAchievement(AchievementType achievementType, Member student, Study study) { + this.achievementType = achievementType; this.student = student; this.study = study; - this.achievementType = achievementType; } - public static StudyAchievement create(Member student, Study study, AchievementType achievementType) { + public static StudyAchievement create(AchievementType achievementType, Member student, Study study) { return StudyAchievement.builder() + .achievementType(achievementType) .student(student) .study(study) - .achievementType(achievementType) .build(); } } diff --git a/src/main/java/com/gdschongik/gdsc/domain/study/domain/StudyAnnouncement.java b/src/main/java/com/gdschongik/gdsc/domain/study/domain/StudyAnnouncement.java index 0e6a24dce..27ab0fc5e 100644 --- a/src/main/java/com/gdschongik/gdsc/domain/study/domain/StudyAnnouncement.java +++ b/src/main/java/com/gdschongik/gdsc/domain/study/domain/StudyAnnouncement.java @@ -24,24 +24,24 @@ public class StudyAnnouncement extends BaseEntity { @Column(name = "study_announcement_id") private Long id; - @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "study_id") - private Study study; - private String title; @Column(columnDefinition = "TEXT") private String link; + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "study_id") + private Study study; + @Builder(access = AccessLevel.PRIVATE) - public StudyAnnouncement(Study study, String title, String link) { - this.study = study; + public StudyAnnouncement(String title, String link, Study study) { this.title = title; this.link = link; + this.study = study; } - public static StudyAnnouncement create(Study study, String title, String link) { - return StudyAnnouncement.builder().study(study).title(title).link(link).build(); + public static StudyAnnouncement create(String title, String link, Study study) { + return StudyAnnouncement.builder().title(title).link(link).study(study).build(); } public void update(String title, String link) { diff --git a/src/main/java/com/gdschongik/gdsc/domain/study/domain/StudyDetail.java b/src/main/java/com/gdschongik/gdsc/domain/study/domain/StudyDetail.java index 1c4aa8655..f854b59d9 100644 --- a/src/main/java/com/gdschongik/gdsc/domain/study/domain/StudyDetail.java +++ b/src/main/java/com/gdschongik/gdsc/domain/study/domain/StudyDetail.java @@ -28,10 +28,6 @@ public class StudyDetail extends BaseEntity { @Column(name = "study_detail_id") private Long id; - @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "study_id") - private Study study; - @Comment("현 주차수") private Long week; // TODO: Integer로 변경 @@ -55,31 +51,35 @@ public class StudyDetail extends BaseEntity { @AttributeOverride(name = "status", column = @Column(name = "assignment_status")) private Assignment assignment; + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "study_id") + private Study study; + @Builder(access = AccessLevel.PRIVATE) private StudyDetail( - Study study, Long week, String attendanceNumber, Period period, Curriculum curriculum, - Assignment assignment) { - this.study = study; + Assignment assignment, + Study study) { this.week = week; this.attendanceNumber = attendanceNumber; this.period = period; this.curriculum = curriculum; this.assignment = assignment; + this.study = study; } - public static StudyDetail create(Study study, Long week, String attendanceNumber, Period period) { + public static StudyDetail create(Long week, String attendanceNumber, Period period, Study study) { return StudyDetail.builder() - .study(study) .week(week) .period(period) .attendanceNumber(attendanceNumber) .period(period) .curriculum(Curriculum.empty()) .assignment(Assignment.empty()) + .study(study) .build(); } diff --git a/src/main/java/com/gdschongik/gdsc/domain/study/domain/StudyHistory.java b/src/main/java/com/gdschongik/gdsc/domain/study/domain/StudyHistory.java index 822931afc..b6e506935 100644 --- a/src/main/java/com/gdschongik/gdsc/domain/study/domain/StudyHistory.java +++ b/src/main/java/com/gdschongik/gdsc/domain/study/domain/StudyHistory.java @@ -35,6 +35,12 @@ public class StudyHistory extends BaseEntity { @Column(name = "study_history_id") private Long id; + @Comment("수료 상태") + @Enumerated(EnumType.STRING) + private StudyHistoryStatus studyHistoryStatus; + + private String repositoryLink; + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "member_id") private Member student; @@ -43,17 +49,11 @@ public class StudyHistory extends BaseEntity { @JoinColumn(name = "study_id") private Study study; - private String repositoryLink; - - @Comment("수료 상태") - @Enumerated(EnumType.STRING) - private StudyHistoryStatus studyHistoryStatus; - @Builder(access = AccessLevel.PRIVATE) private StudyHistory(Member student, Study study) { + this.studyHistoryStatus = NONE; this.student = student; this.study = study; - this.studyHistoryStatus = NONE; } public static StudyHistory create(Member student, Study study) { diff --git a/src/main/java/com/gdschongik/gdsc/domain/study/factory/StudyDomainFactory.java b/src/main/java/com/gdschongik/gdsc/domain/study/factory/StudyDomainFactory.java index bac2492c7..c586feb7b 100644 --- a/src/main/java/com/gdschongik/gdsc/domain/study/factory/StudyDomainFactory.java +++ b/src/main/java/com/gdschongik/gdsc/domain/study/factory/StudyDomainFactory.java @@ -18,19 +18,19 @@ public class StudyDomainFactory { public Study createNewStudy(StudyCreateRequest request, Member mentor) { LocalDate endDate = request.startDate().plusWeeks(request.totalWeek()).minusDays(1); return Study.create( - request.academicYear(), - request.semesterType(), + request.studyType(), request.title(), - mentor, + request.totalWeek(), + request.dayOfWeek(), + request.studyStartTime(), + request.studyEndTime(), Period.of(request.startDate().atStartOfDay(), endDate.atTime(LocalTime.MAX)), Period.of( request.applicationStartDate().atStartOfDay(), request.applicationEndDate().atTime(LocalTime.MAX)), - request.totalWeek(), - request.studyType(), - request.dayOfWeek(), - request.studyStartTime(), - request.studyEndTime()); + mentor, + request.academicYear(), + request.semesterType()); } // 해당 주의 비어있는 스터디상세를 생성합니다. @@ -40,6 +40,6 @@ public StudyDetail createNoneStudyDetail(Study study, Long week) { String attendanceNumber = new Random().ints(4, 0, 10).mapToObj(String::valueOf).reduce("", String::concat); - return StudyDetail.create(study, week, attendanceNumber, Period.of(startDate, endDate)); + return StudyDetail.create(week, attendanceNumber, Period.of(startDate, endDate), study); } } diff --git a/src/test/java/com/gdschongik/gdsc/domain/coupon/util/CouponNameUtilTest.java b/src/test/java/com/gdschongik/gdsc/domain/coupon/util/CouponNameUtilTest.java index b85210f86..7a57dead6 100644 --- a/src/test/java/com/gdschongik/gdsc/domain/coupon/util/CouponNameUtilTest.java +++ b/src/test/java/com/gdschongik/gdsc/domain/coupon/util/CouponNameUtilTest.java @@ -21,17 +21,17 @@ class CouponNameUtilTest { // given Member mentor = fixtureHelper.createMentor(1L); Study study = Study.create( - 2025, - SemesterType.FIRST, + ONLINE_STUDY, "기초 백엔드 스터디", - mentor, - STUDY_ONGOING_PERIOD, - Period.of(START_DATE.minusDays(10), START_DATE.minusDays(5)), TOTAL_WEEK, - ONLINE_STUDY, DAY_OF_WEEK, STUDY_START_TIME, - STUDY_END_TIME); + STUDY_END_TIME, + STUDY_ONGOING_PERIOD, + Period.of(START_DATE.minusDays(10), START_DATE.minusDays(5)), + mentor, + 2025, + SemesterType.FIRST); // when String couponName = couponNameUtil.generateStudyCompletionCouponName(study); diff --git a/src/test/java/com/gdschongik/gdsc/domain/member/domain/MemberValidatorTest.java b/src/test/java/com/gdschongik/gdsc/domain/member/domain/MemberValidatorTest.java index 657a09b5e..782dcae41 100644 --- a/src/test/java/com/gdschongik/gdsc/domain/member/domain/MemberValidatorTest.java +++ b/src/test/java/com/gdschongik/gdsc/domain/member/domain/MemberValidatorTest.java @@ -25,10 +25,10 @@ class 준회원으로_일괄_강등시 { void 해당_학기에_이미_시작된_모집기간이_있다면_실패한다() { // given Recruitment recruitment = - Recruitment.create(ACADEMIC_YEAR, SEMESTER_TYPE, FEE, FEE_NAME, START_TO_END_PERIOD); + Recruitment.create(FEE_NAME, FEE, START_TO_END_PERIOD, ACADEMIC_YEAR, SEMESTER_TYPE); LocalDateTime now = LocalDateTime.now(); RecruitmentRound recruitmentRound = RecruitmentRound.create( - RECRUITMENT_ROUND_NAME, Period.of(now.minusDays(1), now.plusDays(1)), recruitment, ROUND_TYPE); + RECRUITMENT_ROUND_NAME, ROUND_TYPE, Period.of(now.minusDays(1), now.plusDays(1)), recruitment); List recruitmentRounds = List.of(recruitmentRound); // when & then diff --git a/src/test/java/com/gdschongik/gdsc/domain/membership/domain/MembershipTest.java b/src/test/java/com/gdschongik/gdsc/domain/membership/domain/MembershipTest.java index 98a57e8bf..d2a12b844 100644 --- a/src/test/java/com/gdschongik/gdsc/domain/membership/domain/MembershipTest.java +++ b/src/test/java/com/gdschongik/gdsc/domain/membership/domain/MembershipTest.java @@ -29,9 +29,9 @@ class 멤버십_가입신청시 { member.advanceToAssociate(); Recruitment recruitment = Recruitment.create( - ACADEMIC_YEAR, SEMESTER_TYPE, FEE, FEE_NAME, Period.of(SEMESTER_START_DATE, SEMESTER_END_DATE)); + FEE_NAME, FEE, Period.of(SEMESTER_START_DATE, SEMESTER_END_DATE), ACADEMIC_YEAR, SEMESTER_TYPE); RecruitmentRound recruitmentRound = - RecruitmentRound.create(RECRUITMENT_ROUND_NAME, START_TO_END_PERIOD, recruitment, ROUND_TYPE); + RecruitmentRound.create(RECRUITMENT_ROUND_NAME, ROUND_TYPE, START_TO_END_PERIOD, recruitment); // when Membership membership = Membership.create(member, recruitmentRound); diff --git a/src/test/java/com/gdschongik/gdsc/domain/membership/domain/MembershipValidatorTest.java b/src/test/java/com/gdschongik/gdsc/domain/membership/domain/MembershipValidatorTest.java index d858b7146..dbde18b1e 100644 --- a/src/test/java/com/gdschongik/gdsc/domain/membership/domain/MembershipValidatorTest.java +++ b/src/test/java/com/gdschongik/gdsc/domain/membership/domain/MembershipValidatorTest.java @@ -41,8 +41,8 @@ private RecruitmentRound createRecruitmentRound( LocalDateTime startDate, LocalDateTime endDate) { Recruitment recruitment = Recruitment.create( - academicYear, semesterType, fee, FEE_NAME, Period.of(SEMESTER_START_DATE, SEMESTER_END_DATE)); - return RecruitmentRound.create(RECRUITMENT_ROUND_NAME, Period.of(startDate, endDate), recruitment, ROUND_TYPE); + FEE_NAME, fee, Period.of(SEMESTER_START_DATE, SEMESTER_END_DATE), academicYear, semesterType); + return RecruitmentRound.create(RECRUITMENT_ROUND_NAME, ROUND_TYPE, Period.of(startDate, endDate), recruitment); } @Nested diff --git a/src/test/java/com/gdschongik/gdsc/domain/order/domain/OrderTest.java b/src/test/java/com/gdschongik/gdsc/domain/order/domain/OrderTest.java index 829823fdb..bc08c444d 100644 --- a/src/test/java/com/gdschongik/gdsc/domain/order/domain/OrderTest.java +++ b/src/test/java/com/gdschongik/gdsc/domain/order/domain/OrderTest.java @@ -58,7 +58,7 @@ class 무료주문_생성할때 { MoneyInfo freeMoneyInfo = MoneyInfo.of(MONEY_20000_WON, MONEY_20000_WON, Money.ZERO); // when - Order order = Order.createFree("testNanoId", membership, null, freeMoneyInfo); + Order order = Order.createFree("testNanoId", freeMoneyInfo, membership, null); // then assertThat(order.getStatus()).isEqualTo(OrderStatus.COMPLETED); @@ -78,7 +78,7 @@ class 무료주문_생성할때 { MoneyInfo freeMoneyInfo = MoneyInfo.of(MONEY_20000_WON, MONEY_15000_WON, MONEY_5000_WON); // when & then - assertThatThrownBy(() -> Order.createFree("testNanoId", membership, null, freeMoneyInfo)) + assertThatThrownBy(() -> Order.createFree("testNanoId", freeMoneyInfo, membership, null)) .isInstanceOf(CustomException.class) .hasMessage(ORDER_FREE_FINAL_PAYMENT_NOT_ZERO.getMessage()); } @@ -100,7 +100,7 @@ class 주문_취소할때 { Membership membership = createMembership(currentMember, recruitmentRound); Order order = Order.createPending( - "testNanoId", membership, null, MoneyInfo.of(MONEY_20000_WON, MONEY_5000_WON, MONEY_15000_WON)); + "testNanoId", MoneyInfo.of(MONEY_20000_WON, MONEY_5000_WON, MONEY_15000_WON), membership, null); ZonedDateTime canceledAt = ZonedDateTime.now(); @@ -123,7 +123,7 @@ class 주문_취소할때 { Membership membership = createMembership(currentMember, recruitmentRound); Order order = Order.createPending( - "testNanoId", membership, null, MoneyInfo.of(MONEY_20000_WON, MONEY_5000_WON, MONEY_15000_WON)); + "testNanoId", MoneyInfo.of(MONEY_20000_WON, MONEY_5000_WON, MONEY_15000_WON), membership, null); order.complete("testPaymentKey", ZonedDateTime.now()); order.cancel(ZonedDateTime.now()); @@ -148,7 +148,7 @@ class 주문_취소할때 { Membership membership = createMembership(currentMember, recruitmentRound); MoneyInfo freeMoneyInfo = MoneyInfo.of(MONEY_20000_WON, MONEY_20000_WON, Money.ZERO); - Order order = Order.createFree("testNanoId", membership, null, freeMoneyInfo); + Order order = Order.createFree("testNanoId", freeMoneyInfo, membership, null); ZonedDateTime canceledAt = ZonedDateTime.now(); @@ -171,7 +171,7 @@ class 주문_취소할때 { Membership membership = createMembership(currentMember, recruitmentRound); Order order = Order.createPending( - "testNanoId", membership, null, MoneyInfo.of(MONEY_20000_WON, MONEY_5000_WON, MONEY_15000_WON)); + "testNanoId", MoneyInfo.of(MONEY_20000_WON, MONEY_5000_WON, MONEY_15000_WON), membership, null); order.complete("testPaymentKey", ZonedDateTime.now()); ZonedDateTime canceledAt = ZonedDateTime.now(); diff --git a/src/test/java/com/gdschongik/gdsc/domain/order/domain/OrderValidatorTest.java b/src/test/java/com/gdschongik/gdsc/domain/order/domain/OrderValidatorTest.java index a4518dcb8..0921f1408 100644 --- a/src/test/java/com/gdschongik/gdsc/domain/order/domain/OrderValidatorTest.java +++ b/src/test/java/com/gdschongik/gdsc/domain/order/domain/OrderValidatorTest.java @@ -294,7 +294,7 @@ class 주문_완료_검증할때 { Membership membership = createMembership(currentMember, recruitmentRound); Order completedOrder = Order.createPending( - "nanoId", membership, null, MoneyInfo.of(MONEY_20000_WON, Money.ZERO, MONEY_20000_WON)); + "nanoId", MoneyInfo.of(MONEY_20000_WON, Money.ZERO, MONEY_20000_WON), membership, null); completedOrder.complete("paymentKey", ZonedDateTime.now()); Optional emptyIssuedCoupon = Optional.empty(); @@ -322,7 +322,7 @@ class 주문_완료_검증할때 { issuedCoupon.use(LocalDateTime.now()); // 쿠폰을 사용 불가능한 상태로 만듦 Order order = Order.createPending( - "nanoId", membership, issuedCoupon, MoneyInfo.of(MONEY_20000_WON, MONEY_5000_WON, MONEY_15000_WON)); + "nanoId", MoneyInfo.of(MONEY_20000_WON, MONEY_5000_WON, MONEY_15000_WON), membership, issuedCoupon); Optional optionalIssuedCoupon = Optional.of(issuedCoupon); @@ -349,7 +349,7 @@ class 주문_완료_검증할때 { IssuedCoupon issuedCoupon = createAndIssue(MONEY_5000_WON, anotherMember); Order order = Order.createPending( - "nanoId", membership, issuedCoupon, MoneyInfo.of(MONEY_20000_WON, MONEY_5000_WON, MONEY_15000_WON)); + "nanoId", MoneyInfo.of(MONEY_20000_WON, MONEY_5000_WON, MONEY_15000_WON), membership, issuedCoupon); Optional optionalIssuedCoupon = Optional.of(issuedCoupon); @@ -374,7 +374,7 @@ class 주문_완료_검증할때 { Membership membership = createMembership(anotherMember, recruitmentRound); Order order = Order.createPending( - "nanoId", membership, null, MoneyInfo.of(MONEY_20000_WON, Money.ZERO, MONEY_20000_WON)); + "nanoId", MoneyInfo.of(MONEY_20000_WON, Money.ZERO, MONEY_20000_WON), membership, null); Optional emptyIssuedCoupon = Optional.empty(); @@ -398,7 +398,7 @@ class 주문_완료_검증할때 { Membership membership = createMembership(currentMember, recruitmentRound); Order order = Order.createPending( - "nanoId", membership, null, MoneyInfo.of(MONEY_20000_WON, Money.ZERO, MONEY_20000_WON)); + "nanoId", MoneyInfo.of(MONEY_20000_WON, Money.ZERO, MONEY_20000_WON), membership, null); Optional emptyIssuedCoupon = Optional.empty(); @@ -423,7 +423,7 @@ class 주문_완료_검증할때 { IssuedCoupon issuedCoupon = createAndIssue(MONEY_5000_WON, currentMember); Order order = Order.createPending( - "nanoId", membership, issuedCoupon, MoneyInfo.of(MONEY_20000_WON, MONEY_5000_WON, MONEY_15000_WON)); + "nanoId", MoneyInfo.of(MONEY_20000_WON, MONEY_5000_WON, MONEY_15000_WON), membership, issuedCoupon); Optional optionalIssuedCoupon = Optional.of(issuedCoupon); diff --git a/src/test/java/com/gdschongik/gdsc/domain/recruitment/application/AdminRecruitmentServiceTest.java b/src/test/java/com/gdschongik/gdsc/domain/recruitment/application/AdminRecruitmentServiceTest.java index 8225bf2aa..6b097dee3 100644 --- a/src/test/java/com/gdschongik/gdsc/domain/recruitment/application/AdminRecruitmentServiceTest.java +++ b/src/test/java/com/gdschongik/gdsc/domain/recruitment/application/AdminRecruitmentServiceTest.java @@ -71,11 +71,11 @@ class 모집회차_수정시 { // given LocalDateTime now = LocalDateTime.now().withNano(0); Recruitment recruitment = - Recruitment.create(ACADEMIC_YEAR, SEMESTER_TYPE, FEE, FEE_NAME, Period.of(now, now.plusMonths(3))); + Recruitment.create(FEE_NAME, FEE, Period.of(now, now.plusMonths(3)), ACADEMIC_YEAR, SEMESTER_TYPE); recruitmentRepository.save(recruitment); RecruitmentRound recruitmentRound = RecruitmentRound.create( - RECRUITMENT_ROUND_NAME, Period.of(now.plusDays(1), now.plusDays(2)), recruitment, ROUND_TYPE); + RECRUITMENT_ROUND_NAME, ROUND_TYPE, Period.of(now.plusDays(1), now.plusDays(2)), recruitment); recruitmentRoundRepository.save(recruitmentRound); RecruitmentRoundUpdateRequest request = new RecruitmentRoundUpdateRequest( diff --git a/src/test/java/com/gdschongik/gdsc/domain/recruitment/domain/RecruitmentRoundValidatorTest.java b/src/test/java/com/gdschongik/gdsc/domain/recruitment/domain/RecruitmentRoundValidatorTest.java index 557642ba0..ba9334f05 100644 --- a/src/test/java/com/gdschongik/gdsc/domain/recruitment/domain/RecruitmentRoundValidatorTest.java +++ b/src/test/java/com/gdschongik/gdsc/domain/recruitment/domain/RecruitmentRoundValidatorTest.java @@ -25,11 +25,11 @@ class 모집회차_생성시 { void 모집_시작일과_종료일의_연도가_입력된_학년도와_다르다면_실패한다() { // given Recruitment recruitment = Recruitment.create( - 2025, - SEMESTER_TYPE, - FEE, FEE_NAME, - Period.of(LocalDateTime.of(2025, 3, 2, 0, 0), LocalDateTime.of(2025, 8, 31, 0, 0))); + FEE, + Period.of(LocalDateTime.of(2025, 3, 2, 0, 0), LocalDateTime.of(2025, 8, 31, 0, 0)), + 2025, + SEMESTER_TYPE); // when & then assertThatThrownBy(() -> recruitmentRoundValidator.validateRecruitmentRoundCreate( @@ -42,11 +42,11 @@ class 모집회차_생성시 { void 학기_시작일과_종료일의_학기가_입력된_학기와_다르다면_실패한다() { // given Recruitment recruitment = Recruitment.create( - ACADEMIC_YEAR, - SemesterType.SECOND, - FEE, FEE_NAME, - Period.of(LocalDateTime.of(2024, 9, 1, 0, 0), LocalDateTime.of(2025, 2, 28, 0, 0))); + FEE, + Period.of(LocalDateTime.of(2024, 9, 1, 0, 0), LocalDateTime.of(2025, 2, 28, 0, 0)), + ACADEMIC_YEAR, + SemesterType.SECOND); // when & then assertThatThrownBy(() -> recruitmentRoundValidator.validateRecruitmentRoundCreate( @@ -59,7 +59,7 @@ class 모집회차_생성시 { void 모집_시작일과_종료일이_학기_시작일로부터_2주_이내에_있지_않다면_실패한다() { // given Recruitment recruitment = - Recruitment.create(ACADEMIC_YEAR, SEMESTER_TYPE, FEE, FEE_NAME, START_TO_END_PERIOD); + Recruitment.create(FEE_NAME, FEE, START_TO_END_PERIOD, ACADEMIC_YEAR, SEMESTER_TYPE); // when & then assertThatThrownBy(() -> recruitmentRoundValidator.validateRecruitmentRoundCreate( @@ -72,10 +72,10 @@ class 모집회차_생성시 { void 학년도_학기_차수가_모두_중복되면_실패한다() { // given Recruitment recruitment = - Recruitment.create(ACADEMIC_YEAR, SEMESTER_TYPE, FEE, FEE_NAME, START_TO_END_PERIOD); + Recruitment.create(FEE_NAME, FEE, START_TO_END_PERIOD, ACADEMIC_YEAR, SEMESTER_TYPE); RecruitmentRound recruitmentRound = - RecruitmentRound.create(RECRUITMENT_ROUND_NAME, START_TO_END_PERIOD, recruitment, ROUND_TYPE); + RecruitmentRound.create(RECRUITMENT_ROUND_NAME, ROUND_TYPE, START_TO_END_PERIOD, recruitment); // when & then assertThatThrownBy(() -> recruitmentRoundValidator.validateRecruitmentRoundCreate( @@ -92,7 +92,7 @@ class 모집회차_생성시 { void RoundType_1차가_없을때_2차를_생성하려_하면_실패한다() { // given Recruitment recruitment = - Recruitment.create(ACADEMIC_YEAR, SEMESTER_TYPE, FEE, FEE_NAME, START_TO_END_PERIOD); + Recruitment.create(FEE_NAME, FEE, START_TO_END_PERIOD, ACADEMIC_YEAR, SEMESTER_TYPE); // when & then assertThatThrownBy(() -> recruitmentRoundValidator.validateRecruitmentRoundCreate( @@ -105,10 +105,10 @@ class 모집회차_생성시 { void 기간이_중복되는_모집회차가_있다면_실패한다() { // given Recruitment recruitment = - Recruitment.create(ACADEMIC_YEAR, SEMESTER_TYPE, FEE, FEE_NAME, START_TO_END_PERIOD); + Recruitment.create(FEE_NAME, FEE, START_TO_END_PERIOD, ACADEMIC_YEAR, SEMESTER_TYPE); RecruitmentRound recruitmentRound = - RecruitmentRound.create(RECRUITMENT_ROUND_NAME, START_TO_END_PERIOD, recruitment, ROUND_TYPE); + RecruitmentRound.create(RECRUITMENT_ROUND_NAME, ROUND_TYPE, START_TO_END_PERIOD, recruitment); // when & then assertThatThrownBy(() -> recruitmentRoundValidator.validateRecruitmentRoundCreate( @@ -125,14 +125,14 @@ class 모집회차_수정시 { void 기간이_중복되는_모집회차가_있다면_실패한다() { // given Recruitment recruitment = - Recruitment.create(ACADEMIC_YEAR, SEMESTER_TYPE, FEE, FEE_NAME, START_TO_END_PERIOD); + Recruitment.create(FEE_NAME, FEE, START_TO_END_PERIOD, ACADEMIC_YEAR, SEMESTER_TYPE); RecruitmentRound firstRound = - RecruitmentRound.create(RECRUITMENT_ROUND_NAME, START_TO_END_PERIOD, recruitment, ROUND_TYPE); + RecruitmentRound.create(RECRUITMENT_ROUND_NAME, ROUND_TYPE, START_TO_END_PERIOD, recruitment); ReflectionTestUtils.setField(firstRound, "id", 1L); RecruitmentRound secondRound = RecruitmentRound.create( - RECRUITMENT_ROUND_NAME, ROUND_TWO_START_TO_END_PERIOD, recruitment, RoundType.SECOND); + RECRUITMENT_ROUND_NAME, RoundType.SECOND, ROUND_TWO_START_TO_END_PERIOD, recruitment); ReflectionTestUtils.setField(secondRound, "id", 2L); // when & then @@ -151,14 +151,14 @@ class 모집회차_수정시 { void 차수가_중복되는_모집회차가_있다면_실패한다() { // given Recruitment recruitment = - Recruitment.create(ACADEMIC_YEAR, SEMESTER_TYPE, FEE, FEE_NAME, START_TO_END_PERIOD); + Recruitment.create(FEE_NAME, FEE, START_TO_END_PERIOD, ACADEMIC_YEAR, SEMESTER_TYPE); RecruitmentRound firstRound = - RecruitmentRound.create(RECRUITMENT_ROUND_NAME, START_TO_END_PERIOD, recruitment, ROUND_TYPE); + RecruitmentRound.create(RECRUITMENT_ROUND_NAME, ROUND_TYPE, START_TO_END_PERIOD, recruitment); ReflectionTestUtils.setField(firstRound, "id", 1L); RecruitmentRound secondRound = RecruitmentRound.create( - RECRUITMENT_ROUND_NAME, ROUND_TWO_START_TO_END_PERIOD, recruitment, RoundType.SECOND); + RECRUITMENT_ROUND_NAME, RoundType.SECOND, ROUND_TWO_START_TO_END_PERIOD, recruitment); ReflectionTestUtils.setField(secondRound, "id", 2L); // when & then @@ -177,10 +177,10 @@ class 모집회차_수정시 { void 모집_시작일과_종료일이_학기_시작일로부터_2주_이내에_있지_않다면_실패한다() { // given Recruitment recruitment = - Recruitment.create(ACADEMIC_YEAR, SEMESTER_TYPE, FEE, FEE_NAME, START_TO_END_PERIOD); + Recruitment.create(FEE_NAME, FEE, START_TO_END_PERIOD, ACADEMIC_YEAR, SEMESTER_TYPE); RecruitmentRound firstRound = - RecruitmentRound.create(RECRUITMENT_ROUND_NAME, START_TO_END_PERIOD, recruitment, ROUND_TYPE); + RecruitmentRound.create(RECRUITMENT_ROUND_NAME, ROUND_TYPE, START_TO_END_PERIOD, recruitment); ReflectionTestUtils.setField(firstRound, "id", 1L); // when & then @@ -199,10 +199,10 @@ class 모집회차_수정시 { void RoundType_1차를_2차로_수정하려_하면_실패한다() { // given Recruitment recruitment = - Recruitment.create(ACADEMIC_YEAR, SEMESTER_TYPE, FEE, FEE_NAME, START_TO_END_PERIOD); + Recruitment.create(FEE_NAME, FEE, START_TO_END_PERIOD, ACADEMIC_YEAR, SEMESTER_TYPE); RecruitmentRound firstRound = - RecruitmentRound.create(RECRUITMENT_ROUND_NAME, START_TO_END_PERIOD, recruitment, ROUND_TYPE); + RecruitmentRound.create(RECRUITMENT_ROUND_NAME, ROUND_TYPE, START_TO_END_PERIOD, recruitment); ReflectionTestUtils.setField(firstRound, "id", 1L); // when & then @@ -216,10 +216,10 @@ class 모집회차_수정시 { void 모집_시작일이_지났다면_수정_실패한다() { // given Recruitment recruitment = - Recruitment.create(ACADEMIC_YEAR, SEMESTER_TYPE, FEE, FEE_NAME, START_TO_END_PERIOD); + Recruitment.create(FEE_NAME, FEE, START_TO_END_PERIOD, ACADEMIC_YEAR, SEMESTER_TYPE); RecruitmentRound recruitmentRound = - RecruitmentRound.create(RECRUITMENT_ROUND_NAME, START_TO_END_PERIOD, recruitment, ROUND_TYPE); + RecruitmentRound.create(RECRUITMENT_ROUND_NAME, ROUND_TYPE, START_TO_END_PERIOD, recruitment); long recruitmentRoundId = 1L; ReflectionTestUtils.setField(recruitmentRound, "id", recruitmentRoundId); diff --git a/src/test/java/com/gdschongik/gdsc/domain/recruitment/domain/RecruitmentTest.java b/src/test/java/com/gdschongik/gdsc/domain/recruitment/domain/RecruitmentTest.java index b131ef500..de24c7d0d 100644 --- a/src/test/java/com/gdschongik/gdsc/domain/recruitment/domain/RecruitmentTest.java +++ b/src/test/java/com/gdschongik/gdsc/domain/recruitment/domain/RecruitmentTest.java @@ -19,7 +19,7 @@ class 학기생성시 { // when Recruitment recruitment = Recruitment.create( - ACADEMIC_YEAR, SEMESTER_TYPE, FEE, FEE_NAME, Period.of(SEMESTER_START_DATE, SEMESTER_END_DATE)); + FEE_NAME, FEE, Period.of(SEMESTER_START_DATE, SEMESTER_END_DATE), ACADEMIC_YEAR, SEMESTER_TYPE); // then assertThat(recruitment.getSemesterPeriod().getStartDate()).isEqualTo(SEMESTER_START_DATE); diff --git a/src/test/java/com/gdschongik/gdsc/domain/study/domain/StudyTest.java b/src/test/java/com/gdschongik/gdsc/domain/study/domain/StudyTest.java index 8ed31213e..c318462d3 100644 --- a/src/test/java/com/gdschongik/gdsc/domain/study/domain/StudyTest.java +++ b/src/test/java/com/gdschongik/gdsc/domain/study/domain/StudyTest.java @@ -40,17 +40,17 @@ class 스터디_개설시 { // when & then assertThatThrownBy(() -> Study.create( - ACADEMIC_YEAR, - SEMESTER_TYPE, + ONLINE_STUDY, STUDY_TITLE, - guestMember, - START_TO_END_PERIOD, - applicationPeriod, TOTAL_WEEK, - ONLINE_STUDY, DAY_OF_WEEK, STUDY_START_TIME, - STUDY_END_TIME)) + STUDY_END_TIME, + START_TO_END_PERIOD, + applicationPeriod, + guestMember, + ACADEMIC_YEAR, + SEMESTER_TYPE)) .isInstanceOf(CustomException.class) .hasMessage(STUDY_MENTOR_IS_UNAUTHORIZED.getMessage()); } @@ -64,17 +64,17 @@ class 스터디_개설시 { // when & then assertThatThrownBy(() -> Study.create( - ACADEMIC_YEAR, - SEMESTER_TYPE, + ONLINE_STUDY, STUDY_TITLE, - member, - period, - applicationPeriod, TOTAL_WEEK, - ONLINE_STUDY, DAY_OF_WEEK, STUDY_START_TIME, - STUDY_END_TIME)) + STUDY_END_TIME, + period, + applicationPeriod, + member, + ACADEMIC_YEAR, + SEMESTER_TYPE)) .isInstanceOf(CustomException.class) .hasMessage(STUDY_APPLICATION_START_DATE_INVALID.getMessage()); } @@ -88,17 +88,17 @@ class 스터디_개설시 { // when & then assertThatThrownBy(() -> Study.create( - ACADEMIC_YEAR, - SEMESTER_TYPE, + ONLINE_STUDY, STUDY_TITLE, - member, - period, - applicationPeriod, TOTAL_WEEK, - ONLINE_STUDY, DAY_OF_WEEK, null, - null)) + null, + period, + applicationPeriod, + member, + ACADEMIC_YEAR, + SEMESTER_TYPE)) .isInstanceOf(CustomException.class) .hasMessage(ON_OFF_LINE_STUDY_TIME_IS_ESSENTIAL.getMessage()); } @@ -114,17 +114,17 @@ class 스터디_개설시 { // when & then assertThatThrownBy(() -> Study.create( - ACADEMIC_YEAR, - SEMESTER_TYPE, + ONLINE_STUDY, STUDY_TITLE, - member, - period, - applicationPeriod, TOTAL_WEEK, - ONLINE_STUDY, DAY_OF_WEEK, studyStartTime, - studyEndTime)) + studyEndTime, + period, + applicationPeriod, + member, + ACADEMIC_YEAR, + SEMESTER_TYPE)) .isInstanceOf(CustomException.class) .hasMessage(STUDY_TIME_INVALID.getMessage()); } @@ -140,17 +140,17 @@ class 스터디_개설시 { // when & then assertThatThrownBy(() -> Study.create( - ACADEMIC_YEAR, - SEMESTER_TYPE, + ASSIGNMENT_STUDY, STUDY_TITLE, - member, - period, - applicationPeriod, TOTAL_WEEK, - ASSIGNMENT_STUDY, DAY_OF_WEEK, studyStartTime, - studyEndTime)) + studyEndTime, + period, + applicationPeriod, + member, + ACADEMIC_YEAR, + SEMESTER_TYPE)) .isInstanceOf(CustomException.class) .hasMessage(ASSIGNMENT_STUDY_CAN_NOT_INPUT_STUDY_TIME.getMessage()); } diff --git a/src/test/java/com/gdschongik/gdsc/helper/FixtureHelper.java b/src/test/java/com/gdschongik/gdsc/helper/FixtureHelper.java index 9aeefa25c..db18278de 100644 --- a/src/test/java/com/gdschongik/gdsc/helper/FixtureHelper.java +++ b/src/test/java/com/gdschongik/gdsc/helper/FixtureHelper.java @@ -71,10 +71,10 @@ public RecruitmentRound createRecruitmentRound( SemesterType semesterType, Money fee) { Recruitment recruitment = Recruitment.create( - academicYear, semesterType, fee, FEE_NAME, Period.of(SEMESTER_START_DATE, SEMESTER_END_DATE)); + FEE_NAME, fee, Period.of(SEMESTER_START_DATE, SEMESTER_END_DATE), academicYear, semesterType); return RecruitmentRound.create( - RECRUITMENT_ROUND_NAME, Period.of(startDate, endDate), recruitment, RoundType.FIRST); + RECRUITMENT_ROUND_NAME, RoundType.FIRST, Period.of(startDate, endDate), recruitment); } public Membership createMembership(Member member, RecruitmentRound recruitmentRound) { @@ -88,17 +88,17 @@ public IssuedCoupon createAndIssue(Money money, Member member) { public Study createStudy(Member mentor, Period period, Period applicationPeriod) { return Study.create( - ACADEMIC_YEAR, - SEMESTER_TYPE, + ONLINE_STUDY, STUDY_TITLE, - mentor, - period, - applicationPeriod, TOTAL_WEEK, - ONLINE_STUDY, DAY_OF_WEEK, STUDY_START_TIME, - STUDY_END_TIME); + STUDY_END_TIME, + period, + applicationPeriod, + mentor, + ACADEMIC_YEAR, + SEMESTER_TYPE); } public Study createStudyWithMentor(Long mentorId, Period period, Period applicationPeriod) { @@ -107,12 +107,12 @@ public Study createStudyWithMentor(Long mentorId, Period period, Period applicat } public StudyDetail createStudyDetail(Study study, LocalDateTime startDate, LocalDateTime endDate) { - return StudyDetail.create(study, 1L, ATTENDANCE_NUMBER, Period.of(startDate, endDate)); + return StudyDetail.create(1L, ATTENDANCE_NUMBER, Period.of(startDate, endDate), study); } public StudyDetail createNewStudyDetail( Long id, Study study, Long week, LocalDateTime startDate, LocalDateTime endDate) { - StudyDetail studyDetail = StudyDetail.create(study, week, ATTENDANCE_NUMBER, Period.of(startDate, endDate)); + StudyDetail studyDetail = StudyDetail.create(week, ATTENDANCE_NUMBER, Period.of(startDate, endDate), study); ReflectionTestUtils.setField(studyDetail, "id", id); return studyDetail; } diff --git a/src/test/java/com/gdschongik/gdsc/helper/IntegrationTest.java b/src/test/java/com/gdschongik/gdsc/helper/IntegrationTest.java index 29c7b7da4..1a9108340 100644 --- a/src/test/java/com/gdschongik/gdsc/helper/IntegrationTest.java +++ b/src/test/java/com/gdschongik/gdsc/helper/IntegrationTest.java @@ -188,7 +188,7 @@ protected RecruitmentRound createRecruitmentRound() { Recruitment recruitment = createRecruitment(ACADEMIC_YEAR, SEMESTER_TYPE, FEE); RecruitmentRound recruitmentRound = - RecruitmentRound.create(RECRUITMENT_ROUND_NAME, START_TO_END_PERIOD, recruitment, ROUND_TYPE); + RecruitmentRound.create(RECRUITMENT_ROUND_NAME, ROUND_TYPE, START_TO_END_PERIOD, recruitment); return recruitmentRoundRepository.save(recruitmentRound); } @@ -204,13 +204,13 @@ protected RecruitmentRound createRecruitmentRound( Recruitment recruitment = createRecruitment(academicYear, semesterType, fee); RecruitmentRound recruitmentRound = - RecruitmentRound.create(name, Period.of(startDate, endDate), recruitment, roundType); + RecruitmentRound.create(name, roundType, Period.of(startDate, endDate), recruitment); return recruitmentRoundRepository.save(recruitmentRound); } protected Recruitment createRecruitment(Integer academicYear, SemesterType semesterType, Money fee) { Recruitment recruitment = Recruitment.create( - academicYear, semesterType, fee, FEE_NAME, Period.of(SEMESTER_START_DATE, SEMESTER_END_DATE)); + FEE_NAME, fee, Period.of(SEMESTER_START_DATE, SEMESTER_END_DATE), academicYear, semesterType); return recruitmentRepository.save(recruitment); } @@ -228,45 +228,45 @@ protected IssuedCoupon createAndIssue(Money money, Member member) { protected Study createStudy(Member mentor, Period period, Period applicationPeriod) { Study study = Study.create( - ACADEMIC_YEAR, - SEMESTER_TYPE, + ONLINE_STUDY, STUDY_TITLE, - mentor, - period, - applicationPeriod, TOTAL_WEEK, - ONLINE_STUDY, DAY_OF_WEEK, STUDY_START_TIME, - STUDY_END_TIME); + STUDY_END_TIME, + period, + applicationPeriod, + mentor, + ACADEMIC_YEAR, + SEMESTER_TYPE); return studyRepository.save(study); } protected Study createNewStudy(Member mentor, Long totalWeek, Period period, Period applicationPeriod) { Study study = Study.create( - ACADEMIC_YEAR, - SEMESTER_TYPE, + ONLINE_STUDY, STUDY_TITLE, - mentor, - period, - applicationPeriod, totalWeek, - ONLINE_STUDY, DAY_OF_WEEK, STUDY_START_TIME, - STUDY_END_TIME); + STUDY_END_TIME, + period, + applicationPeriod, + mentor, + ACADEMIC_YEAR, + SEMESTER_TYPE); return studyRepository.save(study); } protected StudyDetail createStudyDetail(Study study, LocalDateTime startDate, LocalDateTime endDate) { - StudyDetail studyDetail = StudyDetail.create(study, 1L, ATTENDANCE_NUMBER, Period.of(startDate, endDate)); + StudyDetail studyDetail = StudyDetail.create(1L, ATTENDANCE_NUMBER, Period.of(startDate, endDate), study); return studyDetailRepository.save(studyDetail); } protected StudyDetail createNewStudyDetail(Long week, Study study, LocalDateTime startDate, LocalDateTime endDate) { - StudyDetail studyDetail = StudyDetail.create(study, week, ATTENDANCE_NUMBER, Period.of(startDate, endDate)); + StudyDetail studyDetail = StudyDetail.create(week, ATTENDANCE_NUMBER, Period.of(startDate, endDate), study); return studyDetailRepository.save(studyDetail); } @@ -276,7 +276,7 @@ protected StudyHistory createStudyHistory(Member member, Study study) { } protected StudyAchievement createStudyAchievement(Member member, Study study, AchievementType achievementType) { - StudyAchievement studyAchievement = StudyAchievement.create(member, study, achievementType); + StudyAchievement studyAchievement = StudyAchievement.create(achievementType, member, study); return studyAchievementRepository.save(studyAchievement); }