34 lines
1.5 KiB
JavaScript
34 lines
1.5 KiB
JavaScript
const schedule = require('node-schedule')
|
|
const { asyncSendNotice } = require('../utils/notify')
|
|
const { formatTimestamp } = require('../utils/tools')
|
|
const { HostListDB } = require('../utils/db-class')
|
|
const hostListDB = new HostListDB().getInstance()
|
|
|
|
const expiredNotifyJob = async () => {
|
|
consola.info('=====开始检测服务器到期时间=====', new Date())
|
|
const hostList = await hostListDB.findAsync({})
|
|
for (const item of hostList) {
|
|
if (!item.expiredNotify) continue
|
|
const { host, name, expired, consoleUrl } = item
|
|
const restDay = Number(((expired - Date.now()) / (1000 * 60 * 60 * 24)).toFixed(1))
|
|
console.log(Date.now(), restDay)
|
|
let title = '服务器到期提醒'
|
|
let content = `别名: ${ name }\nIP: ${ host }\n到期时间:${ formatTimestamp(expired, 'week') }\n控制台: ${ consoleUrl || '未填写' }`
|
|
if (0 <= restDay && restDay <= 1) {
|
|
let temp = '有服务器将在一天后到期,请关注\n'
|
|
asyncSendNotice('host_expired', title, temp + content)
|
|
} else if (3 <= restDay && restDay < 4) {
|
|
let temp = '有服务器将在三天后到期,请关注\n'
|
|
asyncSendNotice('host_expired', title, temp + content)
|
|
} else if (7 <= restDay && restDay < 8) {
|
|
let temp = '有服务器将在七天后到期,请关注\n'
|
|
asyncSendNotice('host_expired', title, temp + content)
|
|
}
|
|
}
|
|
}
|
|
|
|
module.exports = () => {
|
|
// 每天中午12点执行一次。
|
|
schedule.scheduleJob('0 0 12 1/1 * ?', expiredNotifyJob)
|
|
}
|