diff --git a/src/main/java/com/idol/board/service/article/query/ArticleStatusService.java b/src/main/java/com/idol/board/service/article/query/ArticleStatusService.java index 53b8166..daf5299 100644 --- a/src/main/java/com/idol/board/service/article/query/ArticleStatusService.java +++ b/src/main/java/com/idol/board/service/article/query/ArticleStatusService.java @@ -19,7 +19,6 @@ public class ArticleStatusService { private final ArticleRepository articleRepository; private final EntityManager entityManager; - @Transactional(propagation = Propagation.REQUIRES_NEW) public void validateCheckOpenStatus(Article article) { if(article.getCurrentPerson() >= article.getMinPerson()){ if(article.getOpenStatus().equals(OpenStatus.PENDING_STATUS)) { @@ -28,8 +27,6 @@ public void validateCheckOpenStatus(Article article) { } } - - @Transactional(propagation = Propagation.REQUIRES_NEW) public OpenStatus validateCheckDeadlineStatus(Long articleId, OpenStatus status, Date deadline) { Article article = articleRepository.findByArticleId(articleId) .orElseThrow(() -> new NotFoundException("Article", articleId)); diff --git a/src/main/java/com/idol/board/service/article/query/ReadArticleService.java b/src/main/java/com/idol/board/service/article/query/ReadArticleService.java index 869044c..ec92a29 100644 --- a/src/main/java/com/idol/board/service/article/query/ReadArticleService.java +++ b/src/main/java/com/idol/board/service/article/query/ReadArticleService.java @@ -42,7 +42,6 @@ public class ReadArticleService implements ReadArticleUseCase { private final MemberJpaRepository memberJpaRepository; private final ParticipantRepository participantRepository; private final WishRepository wishRepository; - private final ArticleStatusService articleStatusService; @Override @Transactional(readOnly = true) @@ -84,7 +83,7 @@ public ArticleReadResponseDto readArticle(Long articleId, Long userId) { Location location = validateLocation(article.getLocationId()); - articleStatusService.validateCheckOpenStatus(article); + validateCheckOpenStatus(article); boolean wish = wishCheck(articleId,userId); @@ -111,7 +110,7 @@ public List searchArticleList( ArticleListImgResponseDto.from( result, validateLocation(result.locationId()).getRoadNameAddress(), - articleStatusService.validateCheckDeadlineStatus(result.articleId(), result.openStatus(), result.deadLine()), + validateCheckDeadlineStatus(result.articleId(), result.openStatus(), result.deadLine()), wishCheck(result.articleId(), memberId), result.imageKey().equals("")? "" : getS3Url(result.imageKey()).preSignedUrl(), validateUser(result.writerId()).getNickname(), @@ -125,7 +124,30 @@ public List searchArticleList( } + public void validateCheckOpenStatus(Article article) { + if(article.getCurrentPerson() >= article.getMinPerson()){ + if(article.getOpenStatus().equals(OpenStatus.PENDING_STATUS)) { + article.updateOpenStatus(OpenStatus.CONFIRMED_STATUS); + } + } + } + public OpenStatus validateCheckDeadlineStatus(Long articleId, OpenStatus status, Date deadline) { + Article article = articleRepository.findByArticleId(articleId) + .orElseThrow(() -> new NotFoundException("Article", articleId)); + + Timestamp deadlineTime = new Timestamp(deadline.getTime()); + if(deadlineTime.before(new Timestamp(System.currentTimeMillis()))){ + if(status.equals(OpenStatus.CONFIRMED_STATUS)) { + article.updateOpenStatus(OpenStatus.DEADLINE_STATUS); + return OpenStatus.DEADLINE_STATUS; + }else if(status.equals(OpenStatus.PENDING_STATUS)){ + article.updateOpenStatus(OpenStatus.CANCELED_STATUS); + return OpenStatus.CANCELED_STATUS; + } + } + return status; + }