php mysql 订单消息

我现在要查询未支付的订单然后发送消息通知
消息通知规则:
1:30分钟未支付的订单发送一个消息通知 记录这个时间点
2:根据上个时间点 + 2天 如果还是未支付 那么在给用户发送一条消息通知
备注:一个用户最多2条消息通知


订单表

  • order_sn (订单编号)
  • user_id(用户的id)
  • add_time (订单编号)
  • order_sn (下单时间)
  • pay_status(支付状态(1:未支付2:支付成功 3:支付失败) )
  • msg_count (发送的消息通知个数)

现在的问题是 如何查询 30分钟未支付的订单 ? 如何查询上个时间点+2天的订单我现在考虑的是在新建一张发送消息通知的数据表
表结构如下:

  • user_id (用户的编号)
  • add_time (发送消息的时间)

如何更高效查询数据呢? 现在就是查询数据这块

小唯快跑啊
浏览 501回答 4
4回答

侃侃无极

要考虑的因素其实挺多的: 数据量、按时支付的比例 定时的处理(每隔多长时间去判断未支付,用什么方式定时) 发消息(用什么方式发通知?邮件还是短信?会影响处理能力) 如果抛开这些,仅仅是查询到期未支持订单,按你的数据结构,要查询下单30分钟未支付其实很简单,就是下单时间在当前时间30分钟前,且未支付的(再加上未发送过通知的)。建好索引一般不会有什么问题。 如果数据量不大,可以把发送消息的时间放到第一张表那第一次发消息的条件就是“支付时间在30分钟前 且 未支付 且 未发送通知”第二次发消息的条件是“未支付 且 已发送通知 且 上次发送通知是两天前”

猛跑小猪

题主可以了解一下消息队列的概念,顺便推荐一下rabbitMQ。

烙印99

这个其实很好处理的,就是根据时间判断,用当前时间-未支付的订单的创建时间,如果大于30分钟就发送消息;同理当前时间-未支付的订单的创建时间大于2天就发送消息;每次发送的时候用你的msg_count记录一下.这样子就ok了.
打开App,查看更多内容
随时随地看视频慕课网APP