订单倒计时取消,nodejs 辅助实现倒计时任务

本文介绍如何使用Node.js通过Express框架创建一个倒计时取消订单的后台服务。服务接收到订单ID、倒计时时间和回调URL等参数后,在设定的时间到达时自动调用回调地址执行取消订单的操作。同时,文中提到了使用forever保持服务运行以及通过js定时器和Linux crontab作为补充方案的局限性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先本地安装node环境

由于小编是搞后台开发的,前段框架略知一二,此处就不班门弄斧了,网上很多教程

http://nodejs.cn/

win和linux找才对应包

 

安装完成之后创建node一个框架express,创建一个工程

地址 127.0.0.1:3000

此处demo 为 LateSend

然后再创建文件

LateSend/routes/latefire.js

倒计时取消订单逻辑代码:

var express = require('express');
var router = express.Router();
var request = require('request');
var moment = require('moment');
router.get('/', function(req, res) {

    var taskname = req.query.taskname;
    var objectid = req.query.objectid;
    var time = req.query.time;
    var start = Date.now();
    var returnUrl = req.query.returnUrl;

    console.log('当前时间:' + moment(start).format('YYYY-MM-DD HH:mm:ss')+"---taskname="+taskname+"----objectid="+objectid+"----time="+time);

    var oneID = setTimeout(function () {

        console.log(Date.now() - start + '毫秒后,'+ moment(start).format('YYYY-MM-DD HH:mm:ss')+'触发动作!被修改订单id:'+objectid+'\r\n');

        request.post(returnUrl+taskname).form({order_id:objectid,time:time});

        clearTimeout(oneID);

    }, time*60*1000);


    res.send("服务器将在"+time+"分 后触发"+taskname+"操作");

});

module.exports = router;

实现逻辑:

1.后台服务器,创建订单的地方,调用127.0.0.1:3000,请求倒计时功能

$url='http://127.0.0.1:3000/latefire?taskname=cancelOrderLateCancel&objectid='.$order_id.'&time=30&returnUrl=127.0.0.1:80/home/order/lateCancelOrder';

此处把express项目用到的信息,作为参数传递过来,回调地址,任务名称,订单ID,倒计时时间

2.node服务启动并持续运行,使用npm 安装插件forever,可一直运行该服务,否则,node退出窗口,服务停止

3.node服务运行,设置time=30之后,自动回调项目取消订单的功能逻辑

地址为127.0.0.1:80/home/order/lateCancelOrder

lateCancelOrder这个方法中,实现取消订单的基本逻辑

 

另外订单倒计时还有一更搓的方法,小编之前自己用的,也分享下吧

在订单下成功页面,js定时器,倒计时30分钟,发送取消请求的命令,缺点,用户会关掉浏览器,定时器,不能运行

这时候,做了各种补救错误,比如请求付款的接口处,先判断时间是否到时间,倒计时30分钟,到了,直接返回订单已过期

辅助linux crontab定时任务,每天晚上12点检查所有漏网之鱼,所有为取消的订单,系统取消掉

 

 

 

 

 

转载于:https://my.oschina.net/osgrace/blog/911842

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值