From 67ce84120a97af376d6a5d71196662d8b88f7aaa Mon Sep 17 00:00:00 2001 From: yeoEun Date: Sun, 9 Nov 2025 19:18:54 +0900 Subject: [PATCH] fix/notification --- .../chainee/service/JobApplicationService.java | 13 +++++-------- .../chainee/service/NotificationService.java | 2 ++ 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/chaineeproject/chainee/service/JobApplicationService.java b/src/main/java/com/chaineeproject/chainee/service/JobApplicationService.java index 9db45e3..4592da1 100644 --- a/src/main/java/com/chaineeproject/chainee/service/JobApplicationService.java +++ b/src/main/java/com/chaineeproject/chainee/service/JobApplicationService.java @@ -6,15 +6,17 @@ import com.chaineeproject.chainee.exception.ApplicationException; import com.chaineeproject.chainee.exception.ErrorCode; import com.chaineeproject.chainee.repository.*; -import jakarta.transaction.Transactional; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.context.ApplicationEventPublisher; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; @Service @RequiredArgsConstructor +@Slf4j public class JobApplicationService { private final UserRepository userRepository; @@ -25,27 +27,22 @@ public class JobApplicationService { @Transactional public void applyToJob(Long postId, Long applicantId, Long resumeId) { - // 1) 지원자 조회(JWT uid로 강제) User applicant = userRepository.findById(applicantId) .orElseThrow(() -> new ApplicationException(ErrorCode.APPLICANT_NOT_FOUND)); - // 2) 공고 조회 JobPost post = jobPostRepository.findById(postId) .orElseThrow(() -> new ApplicationException(ErrorCode.JOB_POST_NOT_FOUND)); - // 3) 이력서 조회 + 소유권 검증(남의 이력서로 지원 방지) Resume resume = resumeRepository.findById(resumeId) .orElseThrow(() -> new ApplicationException(ErrorCode.RESUME_NOT_FOUND)); if (resume.getOwner() == null || !resume.getOwner().getId().equals(applicantId)) { - throw new ApplicationException(ErrorCode.FORBIDDEN); // 또는 전용 에러코드 정의 가능: NOT_OWNER_OF_RESUME + throw new ApplicationException(ErrorCode.FORBIDDEN); } - // 4) 중복 지원 방지 if (jobApplicationRepository.existsByPostIdAndApplicantId(postId, applicantId)) { throw new ApplicationException(ErrorCode.DUPLICATE_APPLICATION); } - // 5) 저장 JobApplication application = new JobApplication(); application.setPost(post); application.setApplicant(applicant); @@ -56,7 +53,7 @@ public void applyToJob(Long postId, Long applicantId, Long resumeId) { jobApplicationRepository.save(application); jobPostRepository.incrementApplicantCount(postId); - // 6) 이벤트(알림용) + log.debug("Publishing JobApplicationCreatedEvent: {}", application.getId()); eventPublisher.publishEvent(new JobApplicationCreatedEvent(application.getId())); } } diff --git a/src/main/java/com/chaineeproject/chainee/service/NotificationService.java b/src/main/java/com/chaineeproject/chainee/service/NotificationService.java index 53c8341..f98b4fc 100644 --- a/src/main/java/com/chaineeproject/chainee/service/NotificationService.java +++ b/src/main/java/com/chaineeproject/chainee/service/NotificationService.java @@ -16,9 +16,11 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.event.TransactionalEventListener; import org.springframework.transaction.event.TransactionPhase; +import lombok.extern.slf4j.Slf4j; @Service @RequiredArgsConstructor +@Slf4j public class NotificationService { private final NotificationRepository notificationRepository;