| | |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.scheduling.annotation.Async; |
| | | import org.springframework.scheduling.annotation.Scheduled; |
| | | import org.springframework.stereotype.Component; |
| | |
| | | @Component |
| | | public class Scheduler { |
| | | |
| | | /*private static final Logger log = LoggerFactory.getLogger(Scheduler.class); |
| | | private static final Logger log = LoggerFactory.getLogger(Scheduler.class); |
| | | |
| | | @Autowired |
| | | private PaymentService paymentService; |
| | |
| | | @Autowired |
| | | private WebSocketService webSocketService; |
| | | |
| | | @Value("${use.scheduler}") |
| | | private boolean bUseScheduler; |
| | | |
| | | // OWL ITS 관련자들에게 회원 가입 정보를 전달한다. |
| | | @Scheduled(cron = "0 0 17 * * *") |
| | | public void sendOwlManager() { |
| | | if (!bUseScheduler) { |
| | | return; |
| | | } |
| | | // OWL ITS 관련자들에게 회원 가입 정보를 전달한다. |
| | | this.userService.sendUserJoinStatisticsEmail(); |
| | | |
| | |
| | | this.userService.sendTotalStatisticsEmail(); |
| | | } |
| | | |
| | | @Scheduled(cron = "0 50 23 * * *") // 매 시간 (초, 분, 시, 일, 월, 년) |
| | | /*@Scheduled(cron = "0 50 23 * * *") // 매 시간 (초, 분, 시, 일, 월, 년) |
| | | public void updateExchangeRatePayment() { |
| | | // 변경된 환율 정보를 결제 금액에 업데이트한다. |
| | | this.paymentService.updateExchangeRatePayment(); |
| | | } |
| | | }*/ |
| | | |
| | | // 자동 결재 - 어제가 만료일인 업무 공간을 찾아서 결제한다. 새벽 1시에 실행 |
| | | @Scheduled(cron = "0 0 01 * * *") // 매 시간 (초, 분, 시, 일, 월, 년) |
| | | /*@Scheduled(cron = "0 0 01 * * *") // 매 시간 (초, 분, 시, 일, 월, 년) |
| | | public void subscribePayment() { |
| | | List<Workspace> workspaces = this.workspaceService.findSubscribeImmediateExpireDate(); |
| | | |
| | | for (Workspace workspace : workspaces) { |
| | | this.paymentService.subscribeImmediate(workspace); |
| | | } |
| | | } |
| | | }*/ |
| | | |
| | | // 이슈와 연결되지 않은 첨부파일 삭제 - 이슈 생성, 수정에서 에디트 창에 첨부했다가 저장하지 않은 파일들... 새벽 1시 30분에 실행 |
| | | @Scheduled(cron = "0 30 01 * * *") |
| | | public void deleteAttachedFileNotIdAndReservationIssue() { |
| | | if (!bUseScheduler) { |
| | | return; |
| | | } |
| | | // 이슈와 연결되지 않은 첨부파일 삭제 |
| | | this.attachedFileService.deleteAttachedFileNotId(); |
| | | // 이슈 예약 발생한 항목을 찾아 이슈를 다시 생성 상태로 변경한다. |
| | |
| | | } |
| | | |
| | | // 업무 공간 자동 초기화 - 어제가 만료일인 업무 공간을 찾아서 업무 공간 사용자, 사용 용량을 초기화한다. 새벽 2시에 실행 |
| | | @Scheduled(cron = "0 0 02 * * *") |
| | | /*@Scheduled(cron = "0 0 02 * * *") |
| | | public void expireWorkspace() { |
| | | // 사용 기간이 만료된 업무 공간을 찾아 용량, 최대 사용자, 서비스 유형을 변경한다. |
| | | this.workspaceService.expireWorkspace(); |
| | | // 업무 공간 만료 예정 안내 |
| | | this.workspaceService.expireAlarmWorkspace(); |
| | | } |
| | | }*/ |
| | | |
| | | // 이메일 예약 발송 - 사용자가 설정한 알림 시간에 시스템에서 일어난 이벤트를 이메일로 발송한다. - 매시간 30분에 실행 |
| | | @Scheduled(cron = "0 0/30 * * * *") |
| | | public void smartEmailSystem() { |
| | | if (!bUseScheduler) { |
| | | return; |
| | | } |
| | | // 예약된 이메일 발송 |
| | | this.systemEmailService.reservationSendEmail(); |
| | | } |
| | | |
| | | // 이메일 실시간 발송 - 1분마다 실행 |
| | | @Scheduled(cron = "0 * * * * *") |
| | | public void realTimeEmailSystem() { |
| | | if (!bUseScheduler) { |
| | | return; |
| | | } |
| | | // 실시간 이메일 발송 |
| | | this.systemEmailService.realTimeSendEmail(); |
| | | } |
| | | |
| | | // 15초 마다 접속자 확인 |
| | | @Scheduled(fixedDelay = 15000) |
| | | /*@Scheduled(fixedDelay = 15000) |
| | | public void pingUsers() { |
| | | // 접속 사용자를 확인한다. |
| | | this.webSocketService.checkActiveUser(); |