const schedule = require("node-schedule"); const api = require("./api"); const dayjs = require("dayjs"); exports.initSchedule = () => { // triggerEveryMinute() triggerAtNight() }; async function triggerEveryMinute() { schedule.scheduleJob("0 * * * * *", async () => { runHighFrequencyTask() }); } async function triggerAtNight() { // 每晚深夜定时任务每隔15分钟出发 schedule.scheduleJob("0 0 22 * * *", async () => { runDeepNightTask(); }); schedule.scheduleJob("0 15 22 * * *", async () => { runDeepNightTask(); }); schedule.scheduleJob("0 30 22 * * *", async () => { runDeepNightTask(); }); schedule.scheduleJob("0 45 22 * * *", async () => { runDeepNightTask(); }); schedule.scheduleJob("0 0 23 * * *", async () => { runDeepNightTask(); }); schedule.scheduleJob("0 15 23 * * *", async () => { runDeepNightTask(); }); schedule.scheduleJob("0 30 23 * * *", async () => { runDeepNightTask(); }); schedule.scheduleJob("0 45 23 * * *", async () => { runDeepNightTask(); }); } // 更新购药订单状态 async function runHighFrequencyTask() { console.log(`[${dayjs().format('YYYY-MM-DD HH:mm:ss:SSS')}] 定时任务触发`); try { const tradeApi = require("./hlw/trade"); await tradeApi.runScheduleTask(); // 线上购药订单处方过期定时任务 await api.getInternetHospitalApi({ type: "runOnlineRxExpireSchedule" }); // 线上购药订单定时任务 await api.getInternetHospitalApi({ type: "runMedicinePurchaseOrderSchedule" }); await api.getInternetHospitalApi({ type: "runChineseMedicineOrderSchedule" }); } catch (e) { console.log('执行定时任务出现错误: ', e.message) } console.log(`[${dayjs().format('YYYY-MM-DD HH:mm:ss:SSS')}]定时任务结束`); } async function runDeepNightTask() { console.log(`[${dayjs().format('YYYY-MM-DD HH:mm:ss:SSS')}] 深度定时任务触发`); try { api.getInternetHospitalApi({ type: "autoSetPeopleOffline" }); api.getInternetHospitalApi({ type: "autoHandleExpireOrder" }); } catch (e) { console.log(`[${dayjs().format('YYYY-MM-DD HH:mm:ss:SSS')}] 深度定时任务执行失败: ${e.message}`) } }