订单模块数据库表解析(二)
本文主要对购物车功能相关表进行解析,介绍从商品加入购物车到下单的整个流程,涉及购物车优惠计算流程、确认单生成流程、下单流程及取消订单流程。
#👍 相关视频教程
- 订单模块数据库表解析(一)open in new window
- 订单模块数据库表解析(二)_上篇open in new window
- 订单模块数据库表解析(二)_中篇open in new window
- 订单模块数据库表解析(二)_下篇open in new window
- 订单模块数据库表解析(三)open in new window
- 订单模块数据库表解析(三)open in new window
- 订单模块接口设计与实现_上篇open in new window
- 订单模块接口设计与实现_下篇open in new window
#购物车表
用于存储购物车中每个商品信息,可用于计算商品优惠金额。
1 | create table oms_cart_item |
#购物下单流程
#整体流程示意图

#移动端流程展示
- 会员选择商品规格

- 选择购物车中商品去结算

- 查看确认单

- 支付订单

- 支付成功

- 查看订单

#实现逻辑
#加入购物车
购物车的主要功能就是存储用户选择的商品信息及计算购物车中商品的优惠。
#购物车优惠计算流程

#相关注意点
- 由于商品优惠都是以商品为单位来设计的,并不是以sku为单位设计的,所以必须以商品为单位来计算商品优惠;
- 代码实现逻辑可以参考OmsPromotionServiceImpl类中的calcCartPromotion方法。
#生成确认单
确认单主要用于用户确认下单的商品信息、优惠信息、价格信息,以及选择收货地址、选择优惠券和使用积分。
#生成确认单流程

#相关注意点
- 总金额的计算:购物车中所有商品的总价;
- 活动优惠的计算:购物车中所有商品的优惠金额累加;
- 应付金额的计算:应付金额=总金额-活动优惠;
- 代码实现逻辑可以参考OmsPortalOrderServiceImpl类中的generateConfirmOrder方法。
#生成订单
对购物车中信息进行处理,综合下单用户的信息来生成订单。
#下单流程

#相关注意点
- 库存的锁定:库存从获取购物车优惠信息时就已经从
pms_sku_stock表中查询出来了,lock_stock字段表示锁定库存的数量,会员看到的商品数量为真实库存减去锁定库存; - 优惠券分解金额的处理:对全场通用、指定分类、指定商品的优惠券分别进行分解金额的计算:
- 全场通用:购物车中所有下单商品进行均摊;
- 指定分类:购物车中对应分类的商品进行均摊;
- 指定商品:购物车中包含的指定商品进行均摊。
- 订单中每个商品的实际支付金额计算:原价-促销优惠-优惠券抵扣-积分抵扣,促销优惠就是购物车计算优惠流程中计算出来的优惠金额;
- 订单号的生成:使用redis来生成,生成规则:8位日期+2位平台号码+2位支付方式+6位以上自增id;
- 优惠券使用完成后需要修改优惠券的使用状态;
- 代码实现逻辑可以参考OmsPortalOrderServiceImpl类中的generateOrder方法。
#取消订单
订单生成之后还需开启一个延时任务来取消超时的订单。
#订单取消流程

#相关注意点
- 代码实现逻辑可以参考OmsPortalOrderServiceImpl类中的cancelOrder方法。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 小小程序员!
