跳到主要内容

订单架构文档

1 交易的概念

指用户与平台之间,用户将平台的商品加入购物车,并提交订单并付款给平台,平台看到用户发起的订单,并将商品发送给用户,用户确认收款,至此完成了一笔成功的交易。

通过以上的概念得知交易包含:用户,商品,购物车,订单,平台。其中用户和平台代表交易的双方,商品,购物车和订单代表交易的媒介。

2 购物车架构

2.1 简述作用

购物车中存储的是平台的商品,这些商品有平台自营也有平台各个商家的商品,当用户将商品添加到购物车时,需要按照平台和各个商家来进行区分。

2.2 添加商品到购物车

2.2.1 流程图

点击查看大图

2.2.2 流程图思路描述:

  1. 调用CartBuyerController的添加商品接口。
  2. 根据商品的skuId读取商品的信息。
  3. 根据商品的id读取参与的促销活动。
  4. 把以上得到的信息存储到CartSkuOriginVo中。
  5. 将CartSkuOriginVo压入到reids。

2.3 展示购物车数据

2.3.1 流程图

2.3.2流程图思路说明

  1. 调用CartBuyerController的读取购物车数据接口。
  2. 通过当前会话的key读取redis缓存中的购物车列表。
  3. 返回购物车数据列表。

3 结算参数架构

3.1 简述作用

结算参数包含(收货人信息,支付方式,配送方式,发票信息,送货时间等),这些信息是用户需要告知平台,如何把商品交易到用户手中。

添加结算参数信息

3.2.1 流程图

点击查看大图

3.2.2 流程思路说明

  1. 调用CheckoutParamBuyerController的接口用户发送的参数信息。
  2. 设置收货地址、支付类型、发票、送货时间等参数信息。
  3. 读取当前会员的默认收货人信息。
  4. 将结算信息放到redis的hash中,key:buyerid,hashKey:addressId/receiveTime/paymentType等,hashValue:value。

3.3 读取结算参数信息

3.3.1 流程图

点击查看大图

3.3.2 思路说明(看红框处)

  1. 调用CheckoutParamBuyerController读取结算参数的接口
  2. 调用结算参数业务层。
  3. 从redis中读取结算参数。
  4. 返回给用户。

4 订单架构

4.1 简述作用

把购物车中的商品,结算参数信息归拢在一起,并按照店铺拆分,购物车中每一个店铺为一个订单,一笔交易包含多个订单,交易价格为我的购物车中所有商品的价格。

4.2 创建交易

4.2.1 流程图

点击查看大图

4.2.2 流程图思路描述

  1. 调用TradeBuyerController创建订单接口。

  2. 调用CheckoutParamManager接口,从redis读取结算参数。

  3. 调用CartReadManager接口,从redis读取购物车数据和交易价格。

  4. 使用建造者模式,创建TradeCreator。

  5. 调用TradeCreator的方法,依次检测配置范围-> 检测商品合法性 -> 检测促销活动合法性 -> 创建交易。

  6. 检测方法: a)调用checkShipRange检测接口,检测配送范围。 b)调用checkGoods检测接口,检测商品是否合规。 c)调用checkPromotion检测接口,检测促销方式是否合规。

  7. 把交易信息以新订单状态存储到数据库中

  8. 把交易发送给消息队列(MQ)。

  9. 返回给用户创建。