diff --git a/src/jobs/jobs.js b/src/jobs/jobs.js index ee77916..fcfb0d1 100644 --- a/src/jobs/jobs.js +++ b/src/jobs/jobs.js @@ -85,7 +85,7 @@ const mock = { }; async function mine (job = mock, done = mock) { //todo: 程序内检查是否可以执行,保证不会启动时错误的自动执行一次 - mylog.info('[Schedule Job] 开始定时计算作业...'); + mylog.info('[Schedule Job] 挖矿程序 开始定时计算作业...'); let currentIndex = await system.findOne({ key: 'userIndex4job' }).exec(); @@ -121,6 +121,31 @@ async function mine (job = mock, done = mock) { mylog.info('收益计算分配完成'); // done('收益计算分配完成'); } +async function confirm (job = mock, done = mock) { + mylog.info('[Schedule Job] 矿晶确认程序开始执行......'); + const unconfirmed = await Fund.find({ + 'fundList.status': 0 + }); + mylog.info('共有' + unconfirmed.length + '用户需要确认'); + unconfirmed.forEach(async (fund) => { + const len = fund.fundList.length || 0; + let acc = 0; + for (let i = 0; i < len; ++i) { + const fundItem = fund.fundList[i]; + if (fundItem && fundItem.status === 0) { + ++acc; + await Fund.findByIdAndUpdate(fund.id, { + $set: { + [`fundList.${i}.status`]: 1 // 确认激活 + } + }); + } + } + mylog.info(`用户${fund.userId} 共更新${acc}条`); + job.touch(); + }); + return done('矿晶确认完成'); +} const jobs = [ { name: 'mine', @@ -133,6 +158,18 @@ const jobs = [ }, skipImmediate: true, timezone: "ETC/GMT+8" + }, + { + name: 'confirm', + processor: confirm, + type: 'every', + slot: '0 0/10 * * * *', // 59 */1 * * * + priority: 'highest', + unique: { + id: 'confirm' + }, + // skipImmediate: true, + timezone: "ETC/GMT+8" } ]; function mountJobs (Job) {