00:00
接下来我们就来编写订单相关的功能,那在编写订单功能之前,我们先来了解一下咱们这个订单系统里边一些核心的重难点以及一些概念。首先我们来说我们的这个订单中心,也就是我们创建的订单微服务,我专门为订单创建一个微服务,鼓励mail order,除了有订单的后台管理的基本资产改查外,我们还要提提供订单的一些核心功能。首先我们来说我们这个订单中心,他在我们整个电商系统里边承担着非常重要的作用。我们说的电商系统里边涉及到常用的三流,分别是我们指的信息流,信息流呢就是我们一些商品信息,优惠信息等等,这些呢相当于一些数据的查询,我们都是信息流,还有我们的资金流,比如我们的付款、退款等等各种资金操作,以及我们的物流,比如我们货物的发送、退货等各种物流状态是订单呢,就是将这三流的一个中间整合商,比如说我们下订单的作用就是为了把我们查到的感兴趣的商品生成一个支付单,我们要付多少的款,付完以后呢,们要去完成一个发货的物流过程,所以订单呢在中间承担着一个枢纽功能,所以呢我们订单环节就会比较复杂,而且也比较重要。订单环节呢,最麻烦的作用就是它要获取我们多个模块的数据和信息,它呢只系流程可能复杂一点,因为它要多模块互相来查询检索,然。
01:32
然后呢,要对这些信息来做一个后一步的加工,加工好了以后,你再流向下一个环节,那订单整个我们下单成功以后,那肯定就留下了我们的支付系统,所以我们这个订单,一个完整订单的构成,应该具有包含我们这几个功能的信息,首先第一个我们用户信息,比如我们是哪个用户下的这个订单,用户的账号信息,当前用户的会员等级,以及他的收货信息,这一块呢,都是属于信息流里边的用户信息,包括我们这个订单信息,那么用户下的这个订单是什么,那订单的下单时间等各种时间信息也好,订单的状态信息也好,有订单的状态,售后的状态,物流的状态,包括我们这个订单可能还有父子订单,比如买了很多的商品,它拆成了两三个单来进行配送,这是就是我们的父子订单等等这一块呢,都是订单信息,包括我们订单里边最重要的我们还要有商品信息。
02:32
一我们商品信息,包括我们到底购买了哪些商品,它的数量以及价格等等,我们订单里边也应该包含这一块信息,包括我们订单的物流信息,我们当前订单的整个物流状态,物流单号等等,以及它的支付信息,我们是使用什么支付渠道,微信,支付宝还是银联各种操作,以及我们这个支付成功或者不成功的状态,以及流水单号等等,各种,特别是呢,我们要支付的这些金额,运费,这些资金流信息,我们在这儿也需要保存起来,以及我们的一些优惠促销信息,所以呢,在我们一个订单表里边,我们肯定就应该满足我们一个订单要囊括这些信息,而我们设计的这个订单表,我们专门呢设计了一个OMSSO,在我们这个OMS系统里边,我们的这个订单表里边呢,也基本包含了这些信息,比如我们的会员的信息,以及我们的订单信息,我们要购买的商品信息有。
03:32
会信息包括我们的物流信息,以及我们整个收货人的各种信息,我们这个订单里边的基本信息也都是有的,那我们这个订单系统里边订单要包含了这些信息以后,我们再来看我们一个订单呢,可能会牵扯到非常多的状态,比如我们这个订单刚创建出来就是一个待付款状态,那用户呢,可以需要对这个订单来进行付款,但如果我们一段时间没付款,订单呢还会自动关闭,而且如果订单只要一创建是待付款状态,库存呢还会进行锁定,防止我们这个用户支付成功以后,我们商品没有货了,会引起一些纠纷。那接下来第二个我们订单呢,还是需要有一个状态叫已付款,那就是用户已经付款成功,那么订单呢,就是已付款状态,已付款状态的订单需要我们仓库系统进行联动,比如我们把订单里边先牵扯到的一些货物,我们要进行。
04:32
调货、配货,包括我们要出库,以及我们发配到物流系统等等,以及我们订单的第三个状态待收货,当我们这个仓库系统将我们这个订单出库以后发给物流,那我们现在呢,就是待收货状态,而且在这个状态情况下呢,我们这个订单系统经常要同步我们的物流信息,一旦用户已经收货完成,那么订单的状态呢,就应该修改为已收货状态,所以接下来第四步,第四步呢就是已完成,已完成就是用户当我们把这个订单确认收货以后,那这个订单呢,就算是完成了,订单的整个交易也就完成了,而且如果订单有什么售后问题,那我们就接下来就要进入我们的售后状态,比如我们的售后中,当我们订单还应该有一个状态叫已取消,那已取消的这个订单状态就应该是用户一段时间没有支付成功,订单自动取消,或者呢,用户下完单不想购买了,自己点了。
05:32
取消订单的功能,那么这个订单呢,就是于取消状态,这我说的订单的几个状态,那订单的整个流程也是比较复杂的,因为一个订单从我们订单的产生到我们订单的整个完成,我们牵扯到非常多的系统之间互相交互,而且呢,我们订单的类型不同,我们业务类型不同,有些呢是实物订单,有些虚拟订单,比如我们充话费,这可能是一个虚拟订单,买一些虚拟产品,他们的流程不同,我们可能订单要牵扯到的大流程也都不同,但一个正常的我们这个网购流程就应该是我们生成一个订单,然后呢去支付,支付完了以后去发货,发货完了以后确认收货,确认收货成功,我们来整个交易完成,而我们这个每个步骤后边都牵扯到我们很多系统之间的调度,那一个订单的完整调度流程。
06:23
大致应该是这个样子的,当然我们这个流程呢,不是非常细化,我们说的是一些核心环节,比如我们这个订单中心,我们用户点击了提交订单,我们下了一个单,那下单呢,我们就要把下单的这些商品获取过来,我们要计算它的这些价格等等,要生成一些订单,所以我们先要商品中心去来查一些商品,再去我们这个营销中心,再来看一些优惠信息,以会员中心看我们这个会员当前有没有什么积分权益等等各种优惠兑换,那这些信息查询到以后,我们相当于要为这些商品,我们就要产生一个订单了,所以接下来最重要的就是我们一定要库存锁定,相当于我们先占个座,就跟大家去12306去来买票的时候,那一旦选中了某一个座号的票来点击下单,但是下单到支付成功中间呢,可能还有30分钟或者15分钟的时间,这15分钟的时间要保证我们选的这个坐票没有被人购买。
07:24
而这就是一个坐席锁定,就跟我们商品的库存锁定是一样的,那么锁定了库存以后,我们计算好所有的运费,计算好价格,我们就可以来生成一个订单,那生成订单以后,我们接下来就要等待用户的支付,所以在支付中心完成订单支付的整个期间,订单可能会由于超时没有支付成功,订单过了30分钟还没支付,我们系统给他自动撤销了,那这个时候呢,我们最重要的步骤也就是解锁库存,包括如果我们这个订单支付失败了,比如网上扣款等各种原因,可能小概率有失败,那我们可能订单撤销了,也要解锁库存,而我们订单只有真正支付成功了,才能流转到下一步,而且每一步是哪个系统在做的,我们在这呢,也有大概的标识,那么比如订单支付成功了,我们这个订单中心呢,这个单就算是下成功了,我们把这个订单中心的这个单就应该配给我们的仓库管理中心。
08:21
我们的库存里边,我们这个库存里边呢,就要对订单里边呢,相关商品要进行出库,而且一出库以后的商品,那就算是扣除库存了,就是说商品只有真正的出了库以后,我们才从库存系统里边真正来做一个扣除操作,那商品一出库以后,接下来就要物流中心来接管我们整个商品的物流状态信息。那么订单系统呢,也要实时的同步这些物流状态信息,一旦我们这个物流状态呢,现在是订单签收,比如我们在订单系统里边,用户呢,收到货了,点了一个确认收货,我们订单签收了,那签收了以后呢,如果一切没问题,用户正常使用期间也没有发生退货,那么用户呢,就可以来评论一下订单里边的商品都是什么样的等等各种,如果发生了一些问题,那么用户呢产生了一些退货,那么这一块呢,接下来就订单进入了我们整个售后流程,我现在就是退货状态,那退货呢,我们可能客服要进行审核申请,我们用户当然也要把退的货我们发回来,或者我们邮递员自取,取过来以后,我们退货的商品真正入库了以后,我们再给库存系统里边把这个商品数量再来叠加上来,我们的售后状态,那就发生一些变更,比如我们这个售后完成,那售后状态呢,也比较复杂,我们可能不止有退货状态,可能过了七天无理由退货,那么现在。
09:44
看到还有我们的免费维修,维修期等等等等,以及我们的质保期,所以整个售后呢,也是一个复杂的系统,当然在我们这个电商里边,我们就不加入整个售后流程了,这是我们说的一个订单从下单开始到最终的流转完成,我们各个系统之间他们需要做的功能,这其实都是一个非常简化的订单逻辑,当然在订单系统里边每一个重要的环节牵扯到的这些概念,我们写到的时候呢,再给大家说,特别在订单系统里边,我们要注重一个东西叫密等性处理,密等性处理我们后来会有详细的文档给大家来做一个介绍,大家先来知道一下,它跟大家以前用到的一个防重复提交,我们表单呢,不能无限次次点提交,提交,提交,把同样的表单数据提交很多次,密令性处理呢,相当于要做这个功能,其实不止我们的订单业务,我们的整个微服务的所有系统都应该做好我们的密等性处理,这是对我们整个订单业务。
10:44
我们的一些核心的重难点的一些介绍,那当我们写到了一些核心流程的时候,我们再来进行细化。
我来说两句