订单架构文档
1 交易的概念
指用户与平台之间,用户将平台的商品加入购物车,并提交订单并付款给平台,平台看到用户发起的订单,并将商品发送给用户,用户确认收款,至此完成了一笔成功的交易。
通过以上的概念得知交易包含:用户,商品,购物车,订单,平台。其中用户和平台代表交易的双方,商品,购物车和订单代表交易的媒介。
2 购物车架构
2.1 简述作用
购物车中存储的是平台的商品,这些商品有平台自营也有平台各个商家的商品,当用户将商品添加到购物车时,需要按照平台和各个商家来进行区分。
2.2 添加商品到购物车
2.2.1 流程图
2.2.2 流程图思路描述:
- 调用CartBuyerController的添加商品接口。
- 根据商品的skuId读取商品的信息。
- 根据商品的id读取参与的促销活动。
- 把以上得到的信息存储到CartSkuOriginVo中。
- 将CartSkuOriginVo压入到reids。
2.3 展示购物车数据
2.3.1 流程图
2.3.2流程图思路说明
- 调用CartBuyerController的读取购物车数据接口。
- 通过当前会话的key读取redis缓存中的购物车列表。
- 返回购物车数据列表。
3 结算参数架构
3.1 简述作用
结算参数包含(收货人信息,支付方式,配送方式,发票信息,送货时间等),这些信息是用户需要告知平台,如何把商品交易到用户手中。
添加结算参数信息
3.2.1 流程图
3.2.2 流程思路说明
- 调用CheckoutParamBuyerController的接口用户发送的参数信息。
- 设置收货地址、支付类型、发票、送货时间等参数信息。
- 读取当前会员的默认收货人信息。
- 将结算信息放到redis的hash中,key:buyerid,hashKey:addressId/receiveTime/paymentType等,hashValue:value。
3.3 读取结算参数信息
3.3.1 流程图
3.3.2 思路说明(看红框处)
- 调用CheckoutParamBuyerController读取结算参数的接口
- 调用结算参数业务层。
- 从redis中读取结算参数。
- 返回给用户。
4 订单架构
4.1 简述作用
把购物车中的商品,结算参数信息归拢在一起,并按照店铺拆分,购物车中每一个店铺为一个订单,一笔交易包含多个订单,交易价格为我的购物车中所有商品的价格。
4.2 创建交易
4.2.1 流程图
4.2.2 流程图思路描述
调用TradeBuyerController创建订单接口。
调用CheckoutParamManager接口,从redis读取结算参数。
调用CartReadManager接口,从redis读取购物车数据和交易价格。
使用建造者模式,创建TradeCreator。
调用TradeCreator的方法,依次检测配置范围-> 检测商品合法性 -> 检测促销活动合法性 -> 创建交易。
检测方法: a)调用checkShipRange检测接口,检测配送范围。 b)调用checkGoods检测接口,检测商品是否合规。 c)调用checkPromotion检测接口,检测促销方式是否合规。
把交易信息以新订单状态存储到数据库中
把交易发送给消息队列(MQ)。
返回给用户创建。