一些实现方案
- 在创建订单时,添加额外字段,记录订单的创建时间。当用户进入此订单页面时就显示倒计时。前端获取当前时间,然后减去订单的创建时间,如果大于30分钟就取消订单,取消订单就修改商品的库存和销量; 如果没有超时就继续倒计时。
- 可以使用定时任务crontab,在创建订单时就生成一个定时任务,设定为30分钟后用户未支付就取消订单,取消订单就把商品的库存和销量做相应的修改。
- 使用celery异步任务实现。在生成订单时同时调用celery的countdown函数,只要传入30分钟的时间,时间到了订单未支付,就取消订单。把异步任务和事务搭配使用,没有修改库存成功就回滚事务。