我现在要查询未支付的订单然后发送消息通知
消息通知规则:
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 (发送消息的时间)
如何更高效查询数据呢? 现在就是查询数据这块
要考虑的因素其实挺多的:
如果抛开这些,仅仅是查询到期未支持订单,按你的数据结构,要查询下单30分钟未支付其实很简单,就是下单时间在当前时间30分钟前,且未支付的(再加上未发送过通知的)。建好索引一般不会有什么问题。
如果数据量不大,可以把发送消息的时间放到第一张表
那第一次发消息的条件就是“支付时间在30分钟前 且 未支付 且 未发送通知”
第二次发消息的条件是“未支付 且 已发送通知 且 上次发送通知是两天前”