用户下单后,30分钟内未支付订单自动取消已经准备用延迟队列去做;
但是订单有一个开始时间和结束时间, 如何能够在开始时间一到修改订单状态为进行中,
结束时间一到,修改订单状态为已结束呢?
也用延迟队列吗,延迟发送时间即开始/结束时间与当前时间的差值?
在程序中 查询数据后 去根据开始/结束时间和当前时间做对比也能判断状态,
但是想在数据库中的状态直接体现进行中和已结束有没有其他的方式呢?
改状态其实不用那么及时;但是在需要操作的地方,直接用开始时间和结束时间判断限制;
不懂延迟队列怎么实现的,但是既然是队列,那你在出队后把订单的状态改为“已结束”可以吗?用户下单的同时把订单状态改为“进行中”可以吗?
写个job一分钟一次扫表就完事了....
你最后也说了,你所有的操作都能根据开始和结束时间来判断订单当前状态,展现出来就行了,我觉得不用单独去维护一个状态字段。
感觉有点怪啊,不知道什么需求,这个状态字段非要不可嘛
目前基于业务的考虑,状态会涉及到已创建,已派工, 服务进行中,服务完成(同待支付), 已支付 等;
目前就是在纠结这个服务进行中 和待支付 我是通过什么机制去修改这个值, 还是说不修改,根据其他状态和 开始/结束时间去 判断服务进行中还说服务结束
@自然醒--:
大概了解了,你有订单状态了,想把进行中和完成加进来
写服务吧 加索引 几秒一次没什么问题的
update orderstatus=进行中,updatetime=now() where orderstatus=已派工 and now()>=starttime
update orderstatus=服务完成,updatetime=now() where orderstatus=进行中 and now()>endtime
开始时间实际就是订单创建时候的时间吧?