作用:定时处理一些事务
例子:每5分钟关闭一批超时未支付的的订单
先看结果
定时器
路径:app/schedule/closeOrder.js
// 关闭超时未支付的订单
module.exports = {
schedule: {
interval: '5m',
type: 'all',
},
async task(ctx) {
let now = new Date()
console.log('定时器-关闭过期的订单---', now);
await ctx.service.order.closeOverTimeOrder();
},
};
服务
const {
Op} = require('sequelize')
const Service = require('egg').Service;
class OrderService extends Service {
// 关闭超时未支付的订单
async closeOverTimeOrder() {
let orders = await this.app.model.Order.findAll({
where:{
status:1,
over_time: {
[Op.lte]: new Date()
}
}, raw: true});
console.log('orders----: ', orders);
if(orders.length>0){
for(let i=0;i<orders.length;i++){
await this.app.model.Order.update({
status: 2}, {
where: {
id: orders[i].id}})
}
}
}
}
module.exports = OrderService;
注意点:
- 新建或修改定时器需要重启项目
至此大功告成