package kr.wisestone.owl.scheduler;
|
|
import kr.wisestone.owl.domain.Workspace;
|
import kr.wisestone.owl.service.*;
|
import kr.wisestone.owl.config.websocket.WebSocketService;
|
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;
|
import java.util.List;
|
|
|
@Component
|
public class Scheduler {
|
|
private static final Logger log = LoggerFactory.getLogger(Scheduler.class);
|
|
@Autowired
|
private PaymentService paymentService;
|
|
@Autowired
|
private WorkspaceService workspaceService;
|
|
@Autowired
|
private SystemEmailService systemEmailService;
|
|
@Autowired
|
private AttachedFileService attachedFileService;
|
|
@Autowired
|
private UserService userService;
|
|
@Autowired
|
private IssueService issueService;
|
|
@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();
|
|
// OWL ITS 관련자들에게 시스템 현황 정보를 전달한다.
|
this.userService.sendTotalStatisticsEmail();
|
}
|
|
/*@Scheduled(cron = "0 50 23 * * *") // 매 시간 (초, 분, 시, 일, 월, 년)
|
public void updateExchangeRatePayment() {
|
// 변경된 환율 정보를 결제 금액에 업데이트한다.
|
this.paymentService.updateExchangeRatePayment();
|
}*/
|
|
// 자동 결재 - 어제가 만료일인 업무 공간을 찾아서 결제한다. 새벽 1시에 실행
|
/*@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();
|
// 이슈 예약 발생한 항목을 찾아 이슈를 다시 생성 상태로 변경한다.
|
this.issueService.reservationIssue();
|
}
|
|
// 업무 공간 자동 초기화 - 어제가 만료일인 업무 공간을 찾아서 업무 공간 사용자, 사용 용량을 초기화한다. 새벽 2시에 실행
|
/*@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)
|
public void pingUsers() {
|
// 접속 사용자를 확인한다.
|
this.webSocketService.checkActiveUser();
|
}*/
|
}
|