2023-11-26 分类: 网站建设
一、业务场景:当客户下单在指定的时间内如果没有付款,那我们需要将这笔订单取消掉,比如好的处理方法是运用延时取消,很多人首先想到的当然是crontab,这个也行,不过这里我们运用swoole的异步毫秒定时器来实现,同样也不会影响到当前程序的运行,具体可以参考:https://wiki.swoole.com/wiki/page/319.html
二、说明,order_status为1时代表客户下单确定,为2时代表客户已付款,为0时代表订单已取消(正是swoole来做的)
三、举例说明,库存表csdn_product_stock产品ID为1的产品库存数量为20,产品ID为2的库存数量为40,然后客户下单一笔产品ID1减10,产品ID2减20,所以库存表只够2次下单,例子中10秒后自动还原库存,如下图:
图解:1、第一次下完单产品ID1库存从20减到了10,产品ID2库存从40减到了20;2、第二次下完单产品ID的库存为0了,产品ID2的库存也为0了,3、第三次下单时,程序提示Out of stock;4、过了10秒钟(每个订单下单后往后推10秒),客户两次下单,由于没有付款(csdn_order表的order_status为1),产品1和产品2的库存被还原了(csdn_order表的order_status变为0),客户又可以继续下单了
1、所需要sql数据库表
DROp table IF EXISTS `csdn_order`;
CREATE table `csdn_order` (
`order_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`order_amount` float(10,2) unsigned NOT NULL DEFAULT '0.00',
`user_name` varchar(64) CHARACTER SET latin1 NOT NULL DEFAULT '',
`order_status` tinyint(2) unsigned NOT NULL DEFAULT '0',
`date_created` datetime NOT NULL,
pRIMARY KEY (`order_id`)
) ENGINE=InnoDb AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
DROp table IF EXISTS `csdn_order_detail`;
CREATE table `csdn_order_detail` (
`detail_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`order_id` int(10) unsigned NOT NULL,
`product_id` int(10) NOT NULL,
`product_price` float(10,2) NOT NULL,
`product_number` smallint(4) unsigned NOT NULL DEFAULT '0',
`date_created` datetime NOT NULL,
pRIMARY KEY (`detail_id`),
KEY `idx_order_id` (`order_id`)
) ENGINE=InnoDb AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
DROp table IF EXISTS `csdn_product_stock`;
CREATE table `csdn_product_stock` (
`auto_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`product_id` int(10) NOT NULL,
`product_stock_number` int(10) unsigned NOT NULL,
`date_modified` datetime NOT NULL,
pRIMARY KEY (`auto_id`),
KEY `idx_product_id` (`product_id`)
) ENGINE=InnoDb AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
INSERT INTO `csdn_product_stock` VALUES ('1', '1', '20', '2018-09-13 19:36:19');
INSERT INTO `csdn_product_stock` VALUES ('2', '2', '40', '2018-09-13 19:36:19');
下面贴出来纯手工pHp,很多同学用了原生pHp,就不会运用到框架里去,其实都一样的,不要想得那么复杂就是了。只要一点就是你用多了,你就会这样觉得咯。
配置文件config.php ,这个在框架的话,基本上都是配置好了。
<?php
$dbHost = "192.168.23.110";
$dbUser = "root";
$dbpassword = "123456";
$dbName = "test";
?>
swoole都是用在linux系统里的,这里的host你可以自己搭建虚拟主机,也可以网上购买属于自己的服务器
订单提交的文件swoole的自动取消订单还原库存等操作教程
文章来源:https://www.cdcxhl.com/news39/296889.html
成都网站建设公司_创新互联,为您提供搜索引擎优化、Google、微信公众号、外贸建站、虚拟主机、企业建站
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联
猜你还喜欢下面的内容