Java生鲜电商平台-订单配送模块的架构与设计
生鲜电商系统最终的目的还是用户下单支付购买,
所以订单管理系统是电商系统中最为复杂的系统,其作为中枢决定着整个商城的运转,
本文将对于生鲜类电商平台的订单设计做一个完整的分析,也对前阶段工作做一个复盘总结
订单系统设计的好坏,决定了平台的可用性、后期的功能拓展和商城价值;订单系统贯穿于整个商城系统,其他各个系统的设计也是为订单系统提供数据支撑。从用户提交订单的那一刻到订单完成,到售后,都需要订单管理系统来管理。
订单管理系统从流程生成过程,大致分为三部分:
1.阶段一、订单生成过程:用户通过平台选择商品,选择添加至购物车(某些平台下单过程无加入购物车流程),生成订单价格,提交订单,后台根据优惠信息、活动信息、会员价等生成订单金额,一般具体到每个商品订单实付金额。
2.阶段二、订单配送过程:用户支付完成,从仓储发货、配送、用户收货后订单完成,如无提起售后流程,一般订单到此就算完成,正常的订单到阶段二流程即结束了。
3.阶段三、订单异常、售后流程:用户在前两个阶段过程中发起支付取消、提起商品售后流程,一般在订单商品配送过程中是不允许用户发起退款,等用户收到货物后才可发起售后,对于生鲜类平台,可能不会做退货的功能。
一、订单生成过程
首先,是用户在商城内选购商品,这个阶段可以叫做用户购物行为。
然后,是系统调取各个系统的数据,计算订单的最终价格,这个阶段可以叫做数据处理过程。
最后,是将订单价格在用户端显示,这个阶段叫做表现层显示。
1、订单提交生成过程
用户下单后系统需要生成订单,生成订单过程需获取商品信息,商品是否涉及相关优惠活动;获取用户会员信息(由于小程序做了付费会员,付费会员与普通会员购物部分商品有不同优惠力度和商品价格差异)。
用户提交商品订单时需要考虑商品库存问题:1.用户提交订单时锁定商品库存,即下单减库存。2.用户付款后锁定商品库存。何时锁定商品库存得看具体情况,个人感觉下单锁库存在商品库存不多,商品畅销情况下用户体验更好,避免在用户支付完成后商家无库存发货。由于社区生鲜类商品,货损较严重,所以设计为用户付款后锁定库存。
2、支付订单后是否需要拆单/合单
订单拆单:客户同时在多家店铺下单,不同的店铺的商品在正常情况下是要拆开的;自营平台商品的订单是否需要拆单根据发货仓是否相同,发货仓不同,也是需要根据商品发货单进行拆单。总之同一个订单,会有多个包裹多个运单发货,就需要将订单查看。
订单合单:同一个用户不同订单需要考虑是否合单发货,需根据实际情况而定,订单合单后,多个订单生成一个发货单发货。
3、订单商品优惠分摊
1. 为什么要对订单金额进行分摊?
首要因素是退款,在订单付款成功之后,如果不针对单个商品进行金额分摊,那么如果用户需要退订单中的部分商品,没法计算需要退的金额。同样如果只是单一商品品类券,则根据符合优惠券使用条件的商品进行分摊,其他商品按照商品售卖价格。
财务对账:将优惠金额分摊到每个商品上,能核算统一订单下的每个商品分别分摊的优惠金额,比如:平台券,一个使用平台券的订单最终需要计算每个商品分摊的优惠金额,以确定每个商品的实际付款金额和享受平台优惠的金额。
核算成本:通过把优惠金额分摊到每个商品上去,运营,财务或采购人员可以评估营销活动的成本。
2. 优惠金额分摊逻辑
按照最小维度进行分摊:即优惠金额需要分摊到每个商品,且同一个商品采购数量大于1时,该商品最终只能有一个分摊后的价格
优惠分摊比例:按照商品金额分摊对应比例的优惠,保证不同商品享受优惠的公平性,否则会出现商品应分摊的优惠大于商品的销售价或影响用户体验。
误差处理:减小误差主要途径是在算法层面上进行优化,同时也无法避免误差,多余的误差需要按照不同的优惠活动分别存储起来,在财务对账和退款的时候需要用到。
这里必须提一下,这里订单商品优惠分摊的前提是订单中商品符合优惠条件,订单中不符合优惠条件的商品不参与优惠分摊。
二、订单配送过程
用户在下单完成后,限制了用户退款订单状态,只允许用户在订单状态为:待发货和配送完成状态下才可以申请退款。支付完成后订单发货状态共分为:待发货、分拣中、配送中、商品到达代收点、配送完成、用户已取货这几个状态。
1、针对有缺货/无货情况
避免生鲜水果类商品的货损过大问题,仓储一般备货较少,有时需及时从生产商拿货,就可能会出现商品不足、无货的情况,如发生缺货、无货的情况,是否补单发货,还是直接退款给用户
生成补货单发货或者退款:在仓储发货分拣发现缺货、无货情况时可发起异常配送流程,针对缺货、无货的商品按照订单生成时间判断影响了具体哪些用户订单,在缺货、无货商品订单中操作想应的补货或者退款操作
这里需要说明一点,我们强调的是客服主动跟受影响的用户进行沟通,而非系统自动发起补货或退款。
2、用户同一天下单多次的订单是否需要合单发货
针对同一用户同一天内的订单是否需要合成一个发货单发货,需要根据具体场景具体考虑,如果做了合成一个发货单,几单包裹在一起是否一个包裹能装下,如果是需要两三个包裹装的话,只有一个发货单如何处理,都是需要考虑解决方案。
三、订单异常、售后流程
订单售后一般包括未支付订单取消、下单完成后未配送前发起退款申请,配送完成后的订单申请售后过程,未支付订单的取消和下单完成后未配送前发起的退款申请,系统在接收到退款申请时会自动给用户订单退款;配送完成后的订单由于商品性质的原因,限定了不支持无理由退货退款,并且没有做退货流程的处理,主要考虑到商品退回至仓库已无价值。
订单系统逆流程的分支很多,需要兼顾业务场景,一般在从0到1的过程中,售后流程会先通过线下的方式解决,以便能把资源集中在更核心的部分。