2013年5月25日 星期六 晴
一、问题的提出:打包工:客服配货之后,给打包工打包,有时候发现有些包裹被打包工误放到别的包裹里了,导致有的买家根本就没收到货,因为我们没发。我们要做一个能像京东物流信息的那种。
二、问题的解决 这个问题,难度不在编程,而在思路。思路不对,会南辕北辙地陷入痛苦的。
我一开始把问题想得很复杂,想通过TOP API来判断当天发货的订单是哪些,判断状态。但如果这样一来,要么就需要做长连接等待TOP主动通知,要么就得花时间轮询,还得考虑有漏的异常情况,耗费资源较大。
换个思路就好了,做成一个与TOP无关的APP就好。解决问题的关键词:快递单上的条形码,这也是数据库的主key。未来通过out_no可以和TOP关联起来,做其他事情。
于是就写了下面这些,工作基本做了50%了,后面就是根据下面的思路按部就班写代码,Android APK需要稍微简单调试改装一下就好。
(一)数据结构(主要采用KVDB):
- 当天的发货列表:outnolist_date:(out_no1,out_no2,out_no3..)
- out_no:createdate,(status,handletime,owner)
- status: 0:已打印,1:已配货,2:打包完毕,3:异常,4:人为确认OK
- owner:001:(name1,psw),002:(name2,psw)。。。先在程序里写死,就那么几个人,后续再扩展接口。
(二)工作流程:
-
客服A打印完快递单,用手机扫描一下,把out_no(****)、owner(001)、status(0)传到网站后台。
-
快递单教给客服B和客服C,她们去配货,配货完毕,再用手机扫一下,把out_no(1231)、owner(002/003)、status(1)传上去。 (未来要扩展,要用到TOP接口,在手机上把要配的货和备注显示出来,方便去配货)
-
客服B和客服C把配好的货及订单放到打包区,等待打包工打包。并且在网站上点击发货。
-
客服A定期扫描打好的包裹,用手机扫描上面的快递单,把out_no(****)、owner(004)、status(2)传到网站后台。
(三)监控程序:
-
起一个Cron,每隔10分钟执行一遍,枚举createdate里的状态,检查。如果运单号太多,可能要用到task来分批检查状态。
-
检查状态的逻辑是这样的: (1)如果status是已打印:如果1小时内没有变成配货状态,则将状态置为异常,并同时告警。 (2)如果status是配货状态:如果4小时内没有变成打包完毕状态,则将状态置为异常,并同时告警。 (3) 告警是可以通过email、gtalk、短信、微信等方式来。
(四)统计与显示 1、通过快递单号的特征判断分别是什么快递。 2、提供网页版或者手机版接口,显示状态异常的单子,及时纠错 。 3、根据状态,筛选显示所发的快递。 4、统计当天所发包裹数量,分别统计各快递当天发的包裹数量。 5、统计客服B和客服C每天的配货量。 6、统计每个包裹所花费的平均时间。
至此,基本设计做好了,后面的改动顶多是修修补补,下面可以coding了。
...