橙单 redis 流程
2015-12-14 23:13:35 10 举报
dispatch car process
作者其他创作
大纲/内容
110s延迟任务,订单无效处理
no
获取优先派单调整时间参数
yes
服务中司机列表不为 null
ORDER_SERVICE_TYPE_PICKUP = 7; //接机ORDER_SERVICE_TYPE_DROP_OFF = 8; //送机ORDER_SERVICE_TYPE_RENT_HOUR = 1; //时租ORDER_SERVICE_TYPE_RENT_HALF_DAY = 11; //半日租ORDER_SERVICE_TYPE_RENT_ALL_DAY = 12; //日租 ORDER_SERVICE_TYPE_BOOKING = 13; //预约用车ORDER_SERVICE_TYPE_AT_ONCE = 14; //立即叫车
计算乘客下车地点到司机家的距离,家、交班坐标不合法以及获取距离失败,以及距离0都从顺风车列表删除
入库,并删除最后一次派单记录
往 redis 插入抢单失败记录和一个完整记录,包含司机的接受时间和接受状态
从 redis 获取最后一次记录是否失败
订车车型包含加上调整时间
排除是否有18,5,6,15,前后一小时4
设置失败原因17,订单派单状态4,订单状态1,最终颜色橙单,并更新订单,删除派单锁,添加订单成功标志,
是否有司机
派单记录入redis
有则添加到司机列表
延迟队列发送 push
司机列表为 null
设置失败原因18,订单改派状态4,订单状态1,最终颜色橙单,并更新订单,删除派单所
获取司机当前经纬度和最后更新时间
End
获取司机列表
司机发送 push
获取给司机推送间隔
CODE_INVALID = -1; //无效CODE_WAIT_CAR = 2; //已新建CODE_DRIVER_CONFIRM = 4;// 已派单CODE_DRIVER_START = 18;// 已出发CODE_DRIVER_ARRIVE = 5;// 已到达CODE_SERIVCE_START = 6;// 已开始服务CODE_SERIVCE_FINISH = 15;// 已结束服务CODE_CANCLE = 8;// 已取消CODE_SETTLE_ACCOUNTS = 9;// 已提交费用CODE_COMMENT_FINISH = 17;//已完成
计算司机当前位置到司机家的距离,家、交班坐标不合法以及获取距离失败,以及距离0都从顺风车列表删除
记录间隔和总时间
顺风车添加优惠时间
排除上车地点到司机距离的点的位置超过城市参数的筛选司机的距离的司机
顺风车和正常司机组合
排除距离城市筛选司机距离的司机,剩余司机调用高德请求实际距离
立即收藏司机
是否成功
没有则将司机列表置空,有则赋值司机经纬度和更新时间并从司机列表中删除经纬度不合法以及2min 内没有上传点位的司机
第一次筛选时高德距离是否是错误
填充司机经纬度
是否出现异常
司机列表是否有司机
根据司机调整时间从小到大
根据乘客 id,上车城市获取收藏司机出错
司机排序
顺风车筛选
DISPATCHER_NO_RESPONSE(\"派单无响应\
设置失败原因27,订单改派状态4,订单状态1,最终颜色橙单,并更新订单,删除派单锁
在司机列表中以商和豪开头的车组的司机都加上调整时间
考虑在线,上班,兼职,车型
是否有司机接单
区分顺风车
高德是否异常
失败则入库,并删除 redis 记录
5Min延迟处理 抢单失败记录处理
开始
使用直线距离
已提交费用30s 内司机
当前时间已提交费用司机+30s
是否可以更新(!=已新建)
计算司机当前位置到司机家距离
是否是免费升级且派单优先时间参数的商务车或豪华车调整时间不为空
记录 redis 订单 flag,并写入 hbase
排除正在服务中司机
往司机的时间里加上响应的时间放入司机列表
无司机
使用高德计算实际距离,并排除实际距离超过城市参数的筛选司机的距离的司机
有则从司机列表删除,如果经纬度也有的话那么添加到顺风车司机列表
筛选司机当前位置和上车距离
筛选出的司机里有收藏司机且订单车型包含此司机车型
免费升级调整时间
计算乘客到司机距离
设置司机当前位置
不满足 rule1和 rule2
有则添加到服务中司机,并从司机列表排除
绿色判断司机列表蓝色不判断司机列表紫色判断是否不判断顺风车以及是否有书风车司机橙色判断是否进入收藏司机节点
加派单锁
城市优先派单时间参数不为空且顺风车优先时间不为空
如果实际距离在0和城市筛选距离之内,赋值距离和耗时,剩下的从司机列表删除
有并且是同城加入服务中司机,并从司机列表排除
根据上车城市和时间获取调整时间参数
顺风车列表删除
收藏
0 条评论
回复 删除
下一页