订单超时过期的实现方案的探讨

在我们的业务开发中,会遇到这样一个场景,用户下了一个单,如果超过20分钟不进行支付,订单就要变成已取消状态。

字段设定

订单中需要设定了三个字段:订单是否取消、是否支付、支付超时时间。

订单是否取消会存在:未取消、已取消

是否支付 存在:待支付、已支付

支付超时时间就是超过这个时间,还没支付完成,就超时了

状态机计算逻辑

在状态机下,订单状态中有一个已取消状态

这个状态是一个状态机:订单是否取消 = true 或者 ( 是否支付 = false 且 当前时间大于支付超时时间)

这样,我们就可以用状态机正确的去获取到这个状态。

当用户在超过了这个支付时间再去支付,就可以告诉用户,订单已取消。

定时任务检查订单状态

由于一般订单的取消会伴随着库存释放以及优惠券红包释放。所以,需要有一个定时任务定时的去获取这样的数据(是否支付 = false 且 当前时间大于支付超时时间),一般时间间隔可以设定为1秒。

在获取到之后,马上将订单是否取消的状态设置成true,然后再去处理相关的释放逻辑。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值