为了账号安全,请及时绑定邮箱和手机立即绑定

php mysql 订单消息

php mysql 订单消息

PHP
小唯快跑啊 2019-03-04 22:43:11
我现在要查询未支付的订单然后发送消息通知消息通知规则: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 (发送消息的时间) 如何更高效查询数据呢? 现在就是查询数据这块
查看完整描述

4 回答

?
侃侃无极

TA贡献2051条经验 获得超10个赞

要考虑的因素其实挺多的:

  1. 数据量、按时支付的比例
  2. 定时的处理(每隔多长时间去判断未支付,用什么方式定时)
  3. 发消息(用什么方式发通知?邮件还是短信?会影响处理能力)

如果抛开这些,仅仅是查询到期未支持订单,按你的数据结构,要查询下单30分钟未支付其实很简单,就是下单时间在当前时间30分钟前,且未支付的(再加上未发送过通知的)。建好索引一般不会有什么问题。

如果数据量不大,可以把发送消息的时间放到第一张表
那第一次发消息的条件就是“支付时间在30分钟前 且 未支付 且 未发送通知”
第二次发消息的条件是“未支付 且 已发送通知 且 上次发送通知是两天前”

查看完整回答
反对 回复 2019-03-18
?
猛跑小猪

TA贡献1858条经验 获得超8个赞

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

查看完整回答
反对 回复 2019-03-18
?
烙印99

TA贡献1829条经验 获得超13个赞

这个其实很好处理的,就是根据时间判断,用当前时间-未支付的订单的创建时间,如果大于30分钟就发送消息;同理当前时间-未支付的订单的创建时间大于2天就发送消息;每次发送的时候用你的msg_count记录一下.这样子就ok了.

查看完整回答
反对 回复 2019-03-18
  • 4 回答
  • 0 关注
  • 483 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信