Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

Expand Down Expand Up @@ -75,4 +76,15 @@ List<Paper> findActivePapersByAdminIds(@Param("adminIds") List<Long> adminIds,
""")
List<Paper> findLatestPapersByStoreIds(@Param("storeIds") List<Long> storeIds);

@Modifying
@Query("""
UPDATE Paper p
SET p.isActivated = :inactiveStatus
WHERE p.partnershipPeriodEnd < :today
AND p.isActivated = :activeStatus
""")
void updatePaperStatus(@Param("today") LocalDate today,
@Param("inactiveStatus") ActivationStatus inactiveStatus,
@Param("activeStatus") ActivationStatus activeStatus);

}
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,5 @@

public interface PaperQueryService {
PaperResponseDTO getStorePaperContent(Long storeId, Member member);
void updatePaperStatus();
}
Original file line number Diff line number Diff line change
@@ -1,17 +1,10 @@
package com.assu.server.domain.partnership.service;

import static com.assu.server.domain.partnership.dto.PaperContentResponseDTO.*;

import java.util.List;

import org.springframework.stereotype.Service;

import com.assu.server.domain.admin.entity.Admin;
import com.assu.server.domain.admin.service.AdminService;
import com.assu.server.domain.member.entity.Member;
import com.assu.server.domain.common.enums.ActivationStatus;
import com.assu.server.domain.common.enums.UserRole;
import com.assu.server.domain.partnership.converter.PartnershipConverter;
import com.assu.server.domain.member.entity.Member;
import com.assu.server.domain.partnership.dto.PaperContentResponseDTO;
import com.assu.server.domain.partnership.dto.PaperResponseDTO;
import com.assu.server.domain.partnership.entity.Paper;
Expand All @@ -23,9 +16,14 @@
import com.assu.server.domain.user.entity.Student;
import com.assu.server.global.apiPayload.code.status.ErrorStatus;
import com.assu.server.global.exception.GeneralException;

import jakarta.transaction.Transactional;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

import java.time.LocalDate;
import java.util.List;

import static com.assu.server.domain.partnership.dto.PaperContentResponseDTO.toContentResponseList;

@Service
@RequiredArgsConstructor
Expand Down Expand Up @@ -79,4 +77,12 @@ public PaperResponseDTO getStorePaperContent(Long storeId, Member member){

}

/**
* paper 상태를 업데이트하는 메서드 (ACTIVE -> INACTIVE)
*/
@Override
public void updatePaperStatus() {
LocalDate today = LocalDate.now();
paperRepository.updatePaperStatus(today, ActivationStatus.INACTIVE, ActivationStatus.ACTIVE);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.assu.server.domain.partnership.service;

import lombok.RequiredArgsConstructor;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
@RequiredArgsConstructor
public class PaperScheduler {
private final PaperQueryServiceImpl paperQueryService;

/**
* 매일 자정에 만료된 Paper를 INACTIVE로 변경
* "0 0 0 * * *" → 매일 00:00:00
*/
@Scheduled(cron = "0 0 0 * * *", zone = "Asia/Seoul")
public void updateExpiredPapers() {
paperQueryService.updatePaperStatus();
}
}