某电商快速发展,每日发单量比较大,购买电商ERP进行进销存管理。但每日退货也有几百单甚至更多,电商ERP系统对订单管理驾轻就熟,处理效率很是高,但对于退货流程管理却相对比较简单,只是一个简单的录入查询,没法对退单进行全生命周期监控。淘宝、拼多多等平台客户发起退货请求,退货单到底有没有返回到仓库,中间可能出现不少意外状况,如快递丢单、客户压根没有退、超时等多种状况,更有部分客户因购买过程不顺心,退货选择退回空包、或者随便放些别的东西等。php
电商老板向ERP厂商提出该部分需求,但愿能追踪退货流程,对快递和客户进行分析查询,对因快递公司责任形成的,须要向快递公司索赔。但电脑ERP相对成熟稳定,厂商不肯为某一个电商而更改他们的系统。同时该退货系统与ERP关联性不大,遂电商老板计划创建一个独立的系统进行退货流程管理。mysql
系统首先获取预退货清单,该清单能够由客服录入,也能够经过各种电商平台接口获取,而后快递单退回入库时,经过扫码枪扫码入库,入库单号与预退货单进行匹配,若是匹配成功,则进入拆包检验流程,仓库对拆包结果上传,能够正常完结该订单,也能够录入拆包异常缘由,如退回空包、寄回货物不对等。android
最后,由客服人员对订单进行确认关闭或导出异常赔付清单。对于长期未匹配成功的订单自动进入超时订单,客服能够将超时订单设置为协商不退货,或丢包。电商管理人员须要登陆后台,查询各种报表,对快递公司和退货频物品,退货成功率等进行考察,进一步提高产品销售空间,减小没必要要的支出,提高利润。整个流程以下图:程序员
根据以上需求,将整个系统分红几个部分:spring
(一) 仓库电脑端,负责对退货入库的订单进行扫码,提交到服务器,并打印当日流水给快递员,防止后期索赔纠纷。sql
(二) 接口端,负责将仓库扫码结果接收入库。该部分业务逻辑尽可能简单,只须要对错单、重复单等进行额外的判断后,直接入退货表便可。thinkphp
(三) 后台服务,负责预退货单与退货单进行匹配、丢包单与入库单匹配、将超过必定时间的预退货单置为超时等后台任务。数据库
(四) 后台管理系统WEB端,仓库管理员对入库单拆包检验结果进行录入,客服负责预退货单采集录入、拆包正常订单完成归档、异常订单查询导出、赔付信息录入、超时订单处理等。电商公司管理人员则能够登陆查询各种统计报表,进行决策分析。bootstrap
(一)仓库电脑端,因为须要监听扫码枪输入,确定须要写一个后台服务或托盘程序,看着仓库里的几台windows操做系统,C#确定最拿手了,决定使用wpf写一个监听程序,与服务端进行通信。数据暂存在本地sqlite数据库。原本想研究一下SQL Server Compact的,微软的帮助文档写的真心混乱,网上资料也比较少,赶时间就用了SQLite。咱们知道SQLite默认是没有用户认证的,之前写android时曾经研究过一个sqlcipher,能够实现用户认证,保护本地数据安全。 windows
(二)接口端,因为工期很是紧,加之需求变化可能比较多,服务端我用了PHP,使用thinkphp框架,之前写的一个简单的权限管理能够直接拿来用,为了赶时间,业务逻辑、数据库curd所有放到controller里了,没有用model。从网上下的bootstrap模板继续用。
(四)后台服务,客户服务器在阿里云,是一台centos服务器,tp的定时任务感受像是假的。决定用springboot写一个jar包,扔到服务器上后台刷时钟。
(五)后台WEB端,与接口服务共用,用的tp3.2。controller+view所有搞定。重复造了很多轮子。
(六)数据库,使用轻量级mysql,数据库建模使用powerdesign。
嗯,差很少了,就用了这么多技术,客户不须要手机端,不然我还能够卖弄一下野生程序员MIS全栈能力。
![]() |
![]() |
WPF |
客户端登陆
客户端选择快递
客户端扫码监听界面
WEB后台首页
预退货单管理界面
已完结订单统计查询
丢包单统计查询