订单超出某个时间后,用户没有确认收货,需要系统自动完成确认操作,也就是更改订单的状态。有什么好的思路吗?

订单超出某个时间后,用户没有确认收货,需要系统自动完成确认操作,也就是更改订单的状态。有什么好的思路吗?

之前看到过有人的思路是做一个队列,像蛇头和蛇尾相连的思路 表示没有看懂
现在请各位大神可以提供一个好的思路和方法 谢谢 ^_^

阅读 6.3k
6 个回答

个人觉得不用环形队列。有PHP后台进程定期(一般10秒吧,太长和太短都不好)读数据库(CLI模式哈):

  1. 订单信息下单后写入一个任务,时间为当前时间+自动确认收货时长
  2. PHP读到那个时间的任务后执行即可

做一个环形队列,比如6天之后自动确认订单,队列可以做成Day1->Day2->Day3->Day4->Day5->Day6->Day1。如果今天是Day1,新订单id保存到Day6里。每天定时自动执行队列里当天的所有订单,如果没确认就自动确认。

每个订单生成时,设置订单过期时间字段,通过定时任务定期读取过期订单,若到时间了依然没有确认收货,改变其状态。

一个比较简单的方法:
写一个PHP方法或函数做超时撤单功能,用cron去调用,或者用户访问订单列表或详情时调用

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题