From f7098754287a191c4074dc2074aeda645b8562ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=82=98=EC=95=84=EC=97=B0?= <110026001+ay-eonii@users.noreply.github.com> Date: Sun, 8 Sep 2024 23:26:42 +0900 Subject: [PATCH] =?UTF-8?q?fix=20=EB=A9=94=EC=9D=BC=20=EC=98=A4=EB=A5=98?= =?UTF-8?q?=20=EC=88=98=EC=A0=95=20(#38)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * refactor: 필드 주입 대신 생성자 주입으로 변경 * refactor: 개행 및 EOL 추가 * refactor: 서류, 최종 메일 분리 및 비동기 처리 * refactor: 빌더 생성자로 변경 * test: displayName 추가 * fix: 스레드 작업 대기 시간 연장 * feat: 메일 예외 추가 * feat: 메일 병렬처리 추가 * fix: 대기시간 연장 * refactor: 메일 예약, 메일 전송 로직 분리 * fix: 메일 전송 테스트 비활성화 * fix: setter 추가 * feat: 서류 합격 메일 전송 * fix: 템플릿 정구 수 --- .../application/domain/Application.java | 100 ++-- .../domain/interview/domain/Interview.java | 32 +- .../land/leets/global/cron/SendMailCron.java | 7 + src/main/resources/templates/PassPaper.html | 437 +++++++++--------- 4 files changed, 294 insertions(+), 282 deletions(-) diff --git a/src/main/java/land/leets/domain/application/domain/Application.java b/src/main/java/land/leets/domain/application/domain/Application.java index 7d4df95..5891d07 100644 --- a/src/main/java/land/leets/domain/application/domain/Application.java +++ b/src/main/java/land/leets/domain/application/domain/Application.java @@ -21,81 +21,83 @@ import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; +import lombok.Setter; @Entity(name = "applications") @Builder @Getter +@Setter @NoArgsConstructor(access = AccessLevel.PROTECTED) @AllArgsConstructor public class Application extends BaseTimeEntity { - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Long id; + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; - @OneToOne - @JoinColumn(name = "uid") - private User user; + @OneToOne + @JoinColumn(name = "uid") + private User user; - @Column(nullable = false) - private String name; + @Column(nullable = false) + private String name; - @Column(nullable = false) - private String major; + @Column(nullable = false) + private String major; - @Column(nullable = false) - private String grade; + @Column(nullable = false) + private String grade; - @Column - private String project; + @Column + private String project; - @Column - private String algorithm; + @Column + private String algorithm; - @Column - private String portfolio; + @Column + private String portfolio; - @Column(nullable = false, columnDefinition = "char(10)") - @Enumerated(EnumType.STRING) - private Position position; + @Column(nullable = false, columnDefinition = "char(10)") + @Enumerated(EnumType.STRING) + private Position position; - @Column - private String career; + @Column + private String career; - @Column(nullable = false) - private String interviewDay; + @Column(nullable = false) + private String interviewDay; - @Column(nullable = false) - private String interviewTime; + @Column(nullable = false) + private String interviewTime; - @Column(nullable = false, columnDefinition = "text(600)") - private String motive; + @Column(nullable = false, columnDefinition = "text(600)") + private String motive; - @Column(nullable = false, columnDefinition = "text(600)") - private String expectation; + @Column(nullable = false, columnDefinition = "text(600)") + private String expectation; - @Column(nullable = false, columnDefinition = "text(600)") - private String capability; + @Column(nullable = false, columnDefinition = "text(600)") + private String capability; - @Column(nullable = false, columnDefinition = "text(600)") - private String conflict; + @Column(nullable = false, columnDefinition = "text(600)") + private String conflict; - @Column(nullable = false, columnDefinition = "text(600)") - private String passion; + @Column(nullable = false, columnDefinition = "text(600)") + private String passion; - @Column - private LocalDateTime appliedAt; + @Column + private LocalDateTime appliedAt; - @Builder.Default - @Column(columnDefinition = "char(10)") - @Enumerated(EnumType.STRING) - private ApplicationStatus applicationStatus = ApplicationStatus.PENDING; + @Builder.Default + @Column(columnDefinition = "char(10)") + @Enumerated(EnumType.STRING) + private ApplicationStatus applicationStatus = ApplicationStatus.PENDING; - @Column(columnDefinition = "char(10)") - @Enumerated(EnumType.STRING) - private SubmitStatus submitStatus; + @Column(columnDefinition = "char(10)") + @Enumerated(EnumType.STRING) + private SubmitStatus submitStatus; - public void updateInfo(LocalDateTime appliedAt) { - this.appliedAt = appliedAt; - } + public void updateInfo(LocalDateTime appliedAt) { + this.appliedAt = appliedAt; + } } diff --git a/src/main/java/land/leets/domain/interview/domain/Interview.java b/src/main/java/land/leets/domain/interview/domain/Interview.java index d40f0a2..66fe51d 100644 --- a/src/main/java/land/leets/domain/interview/domain/Interview.java +++ b/src/main/java/land/leets/domain/interview/domain/Interview.java @@ -1,5 +1,7 @@ package land.leets.domain.interview.domain; +import java.time.LocalDateTime; + import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.EnumType; @@ -16,31 +18,31 @@ import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; - -import java.time.LocalDateTime; +import lombok.Setter; @Entity(name = "interviews") @Builder @Getter +@Setter @NoArgsConstructor(access = AccessLevel.PROTECTED) @AllArgsConstructor public class Interview extends BaseTimeEntity { - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Long id; + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; - @OneToOne - private Application application; + @OneToOne + private Application application; - @Builder.Default - @Column(columnDefinition = "char(10)") - @Enumerated(EnumType.STRING) - private HasInterview hasInterview = HasInterview.PENDING; + @Builder.Default + @Column(columnDefinition = "char(10)") + @Enumerated(EnumType.STRING) + private HasInterview hasInterview = HasInterview.PENDING; - @Column(nullable = false) - private LocalDateTime fixedInterviewDate; + @Column(nullable = false) + private LocalDateTime fixedInterviewDate; - @Column(nullable = false) - private String place; + @Column(nullable = false) + private String place; } diff --git a/src/main/java/land/leets/global/cron/SendMailCron.java b/src/main/java/land/leets/global/cron/SendMailCron.java index b769971..49bca5b 100644 --- a/src/main/java/land/leets/global/cron/SendMailCron.java +++ b/src/main/java/land/leets/global/cron/SendMailCron.java @@ -26,6 +26,13 @@ public void sendPaperMail() { log.info("Send paper result mail successfully."); } + @Scheduled(cron = "0 30 23 8 9 ?") + public void sendPassPaperMail() { + sendPaperMailImpl.execute(ApplicationStatus.PASS_PAPER); + + log.info("Send paper result mail successfully."); + } + @Scheduled(cron = "0 0 10 12 9 ?") public void sendFinalMail() { for (ApplicationStatus status : ApplicationStatus.finals()) { diff --git a/src/main/resources/templates/PassPaper.html b/src/main/resources/templates/PassPaper.html index c682f79..2e14385 100644 --- a/src/main/resources/templates/PassPaper.html +++ b/src/main/resources/templates/PassPaper.html @@ -1,17 +1,17 @@ - - - Leets 면접 안내 + + + Leets 면접 안내 (면접 참여버튼 재 클릭 부탁드립니다.)
- - - - -
- logo + logo - Leets -
- - - - - - + + + - - - + + + - -
- 안녕하세요. Leets입니다.
- 님의 서류 합격을 진심으로 - 축하드립니다!
-
-
- 님의 면접 날짜는 아래와 같습니다. -
- 일시 : -
- 장소 : -
-
- 면접을 희망 하신다면, 아래의 면접 지원 버튼을 클릭 해주세요. -
문의 사항은 아래의 카카오톡 채널로 연락 주시면 감사하겠습니다. -

다시 한 번 합격을 축하드리며 면접에서 뵐 날을 - 기대하겠습니다.
- (버튼 클릭 후 홈페이지로 이동 된다면 정상적으로 처리된 것입니다.) -
- 님의 서류 합격을 진심으로 + 축하드립니다!
+
+
+ 님의 면접 날짜는 아래와 같습니다. +
+ 일시 : +
+ 장소 : +
+
+ 면접을 희망 하신다면, 아래의 면접 지원 버튼을 클릭 해주세요. +
문의 사항은 아래의 카카오톡 채널로 연락 주시면 감사하겠습니다. +

다시 한 번 합격을 축하드리며 면접에서 뵐 날을 + 기대하겠습니다.
+ (버튼 클릭 후 홈페이지로 이동 된다면 정상적으로 처리된 것입니다.) +
+ - 면접 참여 - - + 면접 참여 + + - 면접 미참여 - -
+ 면접 미참여 + +
-
- 카카오톡 문의: - https://pf.kakao.com/_LtLyG -
-
+ > +
+ 카카오톡 문의: + https://pf.kakao.com/_LtLyG +
+ + +
- - - - -
- logo + logo - Leets -
- - - - - - + + + - - - + + + - -
- 안녕하세요. Leets입니다.
- 님의 서류 합격을 진심으로 - 축하드립니다!
-
-
- 님의 면접 날짜는 아래와 같습니다. -
- 일시 : -
- 장소 : -
-
- 면접을 희망 하신다면, 아래의 면접 지원 버튼을 클릭 해주세요. -
문의 사항은 아래의 카카오톡 채널로 연락 주시면 감사하겠습니다. -

다시 한 번 합격을 축하드리며 면접에서 뵐 날을 - 기대하겠습니다.
- (버튼 클릭 후 홈페이지로 이동 된다면 정상적으로 처리된 것입니다.) -
- 님의 서류 합격을 진심으로 + 축하드립니다!
+
+
+ 님의 면접 날짜는 아래와 같습니다. +
+ 일시 : +
+ 장소 : +
+
+ 면접을 희망 하신다면, 아래의 면접 지원 버튼을 클릭 해주세요. +
문의 사항은 아래의 카카오톡 채널로 연락 주시면 감사하겠습니다. +

다시 한 번 합격을 축하드리며 면접에서 뵐 날을 + 기대하겠습니다.
+ (버튼 클릭 후 홈페이지로 이동 된다면 정상적으로 처리된 것입니다.) +
+ - 면접 참여 - - + 면접 참여 + + - 면접 미참여 - -
+ 면접 미참여 + +
-
- 카카오톡 문의: - https://pf.kakao.com/_LtLyG -
-
+ > +
+ 카카오톡 문의: + https://pf.kakao.com/_LtLyG +
+ + +
- - - - -
- logo + logo - Leets -
- - - - - - + + + - + onclick="submitApplication()" + > + 면접 미참여 + + + - - - -
- 안녕하세요. Leets입니다.
- 님의 서류 합격을 진심으로 - 축하드립니다!
-
-
- 님의 면접 날짜는 아래와 같습니다. -
- 일시 : -
- 장소 : -
-
- 면접을 희망 하신다면, 아래의 면접 지원 버튼을 클릭 해주세요. -
문의 사항은 아래의 카카오톡 채널로 연락 주시면 감사하겠습니다. -

다시 한 번 합격을 축하드리며 면접에서 뵐 날을 - 기대하겠습니다.
- (버튼 클릭 후 홈페이지로 이동 된다면 정상적으로 처리된 것입니다.) -
- 님의 서류 합격을 진심으로 + 축하드립니다!
+
+
+ 님의 면접 날짜는 아래와 같습니다. +
+ 일시 : +
+ 장소 : +
+
+ 면접을 희망 하신다면, 아래의 면접 지원 버튼을 클릭 해주세요. +
문의 사항은 아래의 카카오톡 채널로 연락 주시면 감사하겠습니다. +

다시 한 번 합격을 축하드리며 면접에서 뵐 날을 + 기대하겠습니다.
+ (버튼 클릭 후 홈페이지로 이동 된다면 정상적으로 처리된 것입니다.) +
+ - 면접 참여 - - + 면접 참여 + + - 면접 미참여 - -
-
- 카카오톡 문의: - https://pf.kakao.com/_LtLyG -
-
+ > +
+ 카카오톡 문의: + https://pf.kakao.com/_LtLyG +
+ + +
- \ No newline at end of file +