diff --git a/src/main/java/com/dnd/gongmuin/chat_inquiry/repository/ChatInquiryQueryRepository.java b/src/main/java/com/dnd/gongmuin/chat_inquiry/repository/ChatInquiryQueryRepository.java index f77c5c22..e8a326e4 100644 --- a/src/main/java/com/dnd/gongmuin/chat_inquiry/repository/ChatInquiryQueryRepository.java +++ b/src/main/java/com/dnd/gongmuin/chat_inquiry/repository/ChatInquiryQueryRepository.java @@ -1,5 +1,6 @@ package com.dnd.gongmuin.chat_inquiry.repository; +import java.time.LocalDateTime; import java.util.List; import org.springframework.data.domain.Pageable; @@ -14,7 +15,7 @@ public interface ChatInquiryQueryRepository { List getAutoRejectedInquirerIds(); - void updateChatInquiryStatusRejected(); + void updateChatInquiryStatusRejected(LocalDateTime now); List getAutoRejectedChatInquiries(); } diff --git a/src/main/java/com/dnd/gongmuin/chat_inquiry/repository/ChatInquiryQueryRepositoryImpl.java b/src/main/java/com/dnd/gongmuin/chat_inquiry/repository/ChatInquiryQueryRepositoryImpl.java index 496d4adf..eec76192 100644 --- a/src/main/java/com/dnd/gongmuin/chat_inquiry/repository/ChatInquiryQueryRepositoryImpl.java +++ b/src/main/java/com/dnd/gongmuin/chat_inquiry/repository/ChatInquiryQueryRepositoryImpl.java @@ -69,9 +69,10 @@ public List getAutoRejectedChatInquiries() { .fetch(); } - public void updateChatInquiryStatusRejected() { + public void updateChatInquiryStatusRejected(LocalDateTime now) { queryFactory.update(chatInquiry) .set(chatInquiry.status, InquiryStatus.REJECTED) + .set(chatInquiry.updatedAt, now) .where( chatInquiry.createdAt.loe(LocalDateTime.now().minusWeeks(1)), chatInquiry.status.eq(InquiryStatus.PENDING) diff --git a/src/main/java/com/dnd/gongmuin/chat_inquiry/scheduler/ChatInquiryScheduler.java b/src/main/java/com/dnd/gongmuin/chat_inquiry/scheduler/ChatInquiryScheduler.java index c1eb3213..b108effe 100644 --- a/src/main/java/com/dnd/gongmuin/chat_inquiry/scheduler/ChatInquiryScheduler.java +++ b/src/main/java/com/dnd/gongmuin/chat_inquiry/scheduler/ChatInquiryScheduler.java @@ -1,5 +1,7 @@ package com.dnd.gongmuin.chat_inquiry.scheduler; +import java.time.LocalDateTime; + import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; @@ -17,6 +19,6 @@ public class ChatInquiryScheduler { @Transactional @Scheduled(cron = "0 0 0 * * *", zone = "Asia/Seoul") public void rejectChatInquiry() { - chatInquiryService.rejectChatAuto(); + chatInquiryService.rejectChatAuto(LocalDateTime.now()); } } diff --git a/src/main/java/com/dnd/gongmuin/chat_inquiry/service/ChatInquiryService.java b/src/main/java/com/dnd/gongmuin/chat_inquiry/service/ChatInquiryService.java index 73259149..48eb268f 100644 --- a/src/main/java/com/dnd/gongmuin/chat_inquiry/service/ChatInquiryService.java +++ b/src/main/java/com/dnd/gongmuin/chat_inquiry/service/ChatInquiryService.java @@ -1,5 +1,6 @@ package com.dnd.gongmuin.chat_inquiry.service; +import java.time.LocalDateTime; import java.util.List; import java.util.Objects; @@ -132,10 +133,10 @@ public RejectChatResponse rejectChat(Long chatInquiryId, Member answerer) { } @Transactional - public void rejectChatAuto() { + public void rejectChatAuto(LocalDateTime now) { List rejectedChatInquiryDtos = chatInquiryRepository.getAutoRejectedChatInquiries(); List rejectedInquirerIds = getRejectedInquirerIds(rejectedChatInquiryDtos); - chatInquiryRepository.updateChatInquiryStatusRejected(); + chatInquiryRepository.updateChatInquiryStatusRejected(now); memberRepository.refundInMemberIds(rejectedInquirerIds, CHAT_REWARD); creditHistoryService.saveCreditHistoryInMemberIds( rejectedInquirerIds, CreditType.CHAT_REFUND, CHAT_REWARD diff --git a/src/main/java/com/dnd/gongmuin/question_post/repository/QuestionPostQueryRepository.java b/src/main/java/com/dnd/gongmuin/question_post/repository/QuestionPostQueryRepository.java index c6a75f00..759e5cda 100644 --- a/src/main/java/com/dnd/gongmuin/question_post/repository/QuestionPostQueryRepository.java +++ b/src/main/java/com/dnd/gongmuin/question_post/repository/QuestionPostQueryRepository.java @@ -1,5 +1,6 @@ package com.dnd.gongmuin.question_post.repository; +import java.time.LocalDateTime; import java.util.List; import org.springframework.data.domain.Pageable; @@ -23,5 +24,5 @@ Slice getRecommendQuestionPosts( List getRefundQuestionPostDtos(); - void updateQuestionPostStatusAnswerClosed(); + void updateQuestionPostStatusAnswerClosed(LocalDateTime now); } diff --git a/src/main/java/com/dnd/gongmuin/question_post/repository/QuestionPostQueryRepositoryImpl.java b/src/main/java/com/dnd/gongmuin/question_post/repository/QuestionPostQueryRepositoryImpl.java index 94c84c07..58365c10 100644 --- a/src/main/java/com/dnd/gongmuin/question_post/repository/QuestionPostQueryRepositoryImpl.java +++ b/src/main/java/com/dnd/gongmuin/question_post/repository/QuestionPostQueryRepositoryImpl.java @@ -120,10 +120,11 @@ public List getRefundQuestionPostDtos() { } @Override - public void updateQuestionPostStatusAnswerClosed() { + public void updateQuestionPostStatusAnswerClosed(LocalDateTime now) { queryFactory .update(questionPost) .set(questionPost.status, QuestionPostStatus.ANSWER_CLOSED) + .set(questionPost.updatedAt, now) .where( questionPost.createdAt.loe(LocalDateTime.now().minusWeeks(2)), questionPost.status.eq(QuestionPostStatus.ANSWER_WAITING) diff --git a/src/main/java/com/dnd/gongmuin/question_post/scheduler/QuestionPostScheduler.java b/src/main/java/com/dnd/gongmuin/question_post/scheduler/QuestionPostScheduler.java index 4fd5d972..01a86afa 100644 --- a/src/main/java/com/dnd/gongmuin/question_post/scheduler/QuestionPostScheduler.java +++ b/src/main/java/com/dnd/gongmuin/question_post/scheduler/QuestionPostScheduler.java @@ -1,5 +1,7 @@ package com.dnd.gongmuin.question_post.scheduler; +import java.time.LocalDateTime; + import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; @@ -17,6 +19,6 @@ public class QuestionPostScheduler { @Transactional @Scheduled(cron = "0 0 0 * * *", zone = "Asia/Seoul") public void closeQuestionPost() { - questionPostService.changeQuestionPostStatusAnswerClosed(); + questionPostService.changeQuestionPostStatusAnswerClosed(LocalDateTime.now()); } } diff --git a/src/main/java/com/dnd/gongmuin/question_post/service/QuestionPostService.java b/src/main/java/com/dnd/gongmuin/question_post/service/QuestionPostService.java index 866ba8e1..e06ce837 100644 --- a/src/main/java/com/dnd/gongmuin/question_post/service/QuestionPostService.java +++ b/src/main/java/com/dnd/gongmuin/question_post/service/QuestionPostService.java @@ -1,5 +1,6 @@ package com.dnd.gongmuin.question_post.service; +import java.time.LocalDateTime; import java.util.List; import java.util.Objects; @@ -155,8 +156,8 @@ private void validateIfQuestionPostExists(Long questionPostId) { } } - private void validateIfQuestioner(Member member, QuestionPost questionPost){ - if (!Objects.equals(member.getId(), questionPost.getMember().getId())){ + private void validateIfQuestioner(Member member, QuestionPost questionPost) { + if (!Objects.equals(member.getId(), questionPost.getMember().getId())) { throw new ValidationException(QuestionPostErrorCode.NOT_AUTHORIZED); } } @@ -179,9 +180,9 @@ private int getCountByType(Long questionPostId, InteractionType type) { } @Transactional - public void changeQuestionPostStatusAnswerClosed() { + public void changeQuestionPostStatusAnswerClosed(LocalDateTime now) { refundClosedQuestionPosts(); - questionPostRepository.updateQuestionPostStatusAnswerClosed(); + questionPostRepository.updateQuestionPostStatusAnswerClosed(now); } private void refundDeletedQuestionPost(QuestionPost questionPost) { diff --git a/src/test/java/com/dnd/gongmuin/chat_inquiry/repository/ChatInquiryRepositoryTest.java b/src/test/java/com/dnd/gongmuin/chat_inquiry/repository/ChatInquiryRepositoryTest.java index 947de2c5..80f20646 100644 --- a/src/test/java/com/dnd/gongmuin/chat_inquiry/repository/ChatInquiryRepositoryTest.java +++ b/src/test/java/com/dnd/gongmuin/chat_inquiry/repository/ChatInquiryRepositoryTest.java @@ -85,7 +85,7 @@ void updateChatInquiryStatusRejected() { ReflectionTestUtils.setField(chatInquiries.get(0), "createdAt", LocalDateTime.now().minusWeeks(1)); //when - chatInquiryRepository.updateChatInquiryStatusRejected(); + chatInquiryRepository.updateChatInquiryStatusRejected(LocalDateTime.now()); em.flush(); em.clear(); diff --git a/src/test/java/com/dnd/gongmuin/chat_inquiry/service/ChatInquiryServiceTest.java b/src/test/java/com/dnd/gongmuin/chat_inquiry/service/ChatInquiryServiceTest.java index 2c4fd3e6..9dbe0e58 100644 --- a/src/test/java/com/dnd/gongmuin/chat_inquiry/service/ChatInquiryServiceTest.java +++ b/src/test/java/com/dnd/gongmuin/chat_inquiry/service/ChatInquiryServiceTest.java @@ -4,6 +4,7 @@ import static org.junit.jupiter.api.Assertions.*; import static org.mockito.BDDMockito.*; +import java.time.LocalDateTime; import java.util.List; import java.util.Optional; @@ -323,6 +324,8 @@ void rejectChatWithEventPublish() { @Test void rejectChatAuto() { // given + final LocalDateTime now = LocalDateTime.now(); + List rejectedChatInquiryDtos = List.of( new RejectedChatInquiryDto(1L, MemberFixture.member(1L), MemberFixture.member(2L)), new RejectedChatInquiryDto(2L, MemberFixture.member(3L), MemberFixture.member(4L)) @@ -334,11 +337,11 @@ void rejectChatAuto() { given(chatInquiryRepository.getAutoRejectedChatInquiries()).willReturn(rejectedChatInquiryDtos); // when - chatInquiryService.rejectChatAuto(); + chatInquiryService.rejectChatAuto(now); // then verify(chatInquiryRepository).getAutoRejectedChatInquiries(); - verify(chatInquiryRepository).updateChatInquiryStatusRejected(); + verify(chatInquiryRepository).updateChatInquiryStatusRejected(now); verify(memberRepository).refundInMemberIds(rejectedInquirerIds, CHAT_REWARD); verify(creditHistoryService).saveCreditHistoryInMemberIds( rejectedInquirerIds, CreditType.CHAT_REFUND, CHAT_REWARD diff --git a/src/test/java/com/dnd/gongmuin/question_post/repository/QuestionPostRepositoryTest.java b/src/test/java/com/dnd/gongmuin/question_post/repository/QuestionPostRepositoryTest.java index 2356106b..f2068779 100644 --- a/src/test/java/com/dnd/gongmuin/question_post/repository/QuestionPostRepositoryTest.java +++ b/src/test/java/com/dnd/gongmuin/question_post/repository/QuestionPostRepositoryTest.java @@ -291,7 +291,7 @@ void getAutoChangeStatus() { ReflectionTestUtils.setField(questionPost3, "createdAt", LocalDateTime.now().minusWeeks(2)); // when - questionPostRepository.updateQuestionPostStatusAnswerClosed(); + questionPostRepository.updateQuestionPostStatusAnswerClosed(LocalDateTime.now()); em.flush(); em.clear();