一个业务问题 哪位大神指导下

九块腹肌进先生 发布于 2017/02/18 15:05
阅读 206
收藏 0

某一个打车订单  如果评价的话 用户会得到奖励  如果没有评价 三天后自动好评 司机获得奖励

加载中
0
您的好友
您的好友

https://www.oschina.net/question/12_21851

0
b
bingtel

问题分为两部分:
1) 如果评价的话 用户会得到奖励
2)如果没有评价 三天后自动好评 司机获得奖励

问题1)比较简单:因为每条订单都有一个生成时间, 只要判断用户的评价时间<=订单生成时间+3天就可以了

难的是问题 2):如何自动好评

我没想到比较好的方法,但是如果让我做, 我会:

1)使用redis的有序集来存储订单id对应的过期时间(订单的过期时间=订单生成时间+3天), 这个有序集命名为orders(之所以是有序集,orders里面的元素会按照score从小到大递增排序):score表示过期时间,member是订单的id

2)用一个线程,一直循环执行这样的逻辑:获取当前时间戳T,从orders中取出所有score<=T的元素,得到集合L;遍历L,如果发现订单没有评价,就给对应的司机奖励即可……

 

0
记住一座城
记住一座城

1. 定时任务每天跑一次,取3天前的订单,没评价自动好评

2. 订单号存入redis,设置过期时间。开启键空间通知,键过期时收到通知,自动好评

0
快速开发师
快速开发师

写个job每晚自动批量 update 订单表 set 评价 = '<好评>' where  sysdate - 下单时间>=3;

如果3天时间必须是比较准确的话,job周期可以设置成每几分钟或几个小时,这样来跑脚本

0
恋仙
恋仙
为什么三天后自动好评?
返回顶部
顶部