今天我们来探讨一下商城项目当中购物车的场景,分析一下商城中购物车场景的业务实现以及要注意的问题。
第一、普遍认知
首先想聊一下部分开发同学对购物车业务的一个普遍的误区。部分没有开发过购物车业务的小伙伴会认为,购物车业务有什么好分析的,不就是简单的增删改查吗?一旦听到这样的回答,往往几乎可以断定,这位是没有实际开发过购物车业务,下面,我们来分析一下,购物车有哪些业务,我们需要注意些什么。(因为商品购物车关联的就是商城的订单创建,具体可以查看 商城项目的业务分析创建订单这篇文章。
第二、具体业务分析
1. 表结构梳理。购物车项目,往往只要一张主表就足够了,有时候也会多一张日志表,记录某一条购物车信息的变化。主表里的字段分几个部分,首先是用户信息,如用户id等,其次是商品信息,如商品goodsId,商品skuId,商品图片,sku图片,配送方式(自提或者邮寄)等等,还有时购物车表独有的信息,如添加购物车时的数量。那么在这里就涉及到一个问题,要不要在主表的商品信息里,附加上购物车的价格,多少积分或者多少现金。这里加上的话,对于用户来说,体验更好,但是对于程序来说,一旦商品的价格变化,所有购物车信息价格跟着变。因此,这里也见仁见智,购物车主表里有价格的,就要做好准备改,主表里没有价格的,就要做好准备每次都去查。个人而言,我更倾向于第一种方式,当商品价格变动的时候,修改对应购物车里的价格,所以我会在主表里加上商品的实时价格。
2. 具体的业务。购物车的业务有哪些呢?业务是购物车的增删改查,但不是简单的增删改查。因为这里的增删改查与订单,与商品,与库存都有关系。
3. 代码实现。首先我们思考一下添加购物车: (也有把添加购物车和修改购物车整合成一个接口的,这里我们用分开两个接口方式)
入库内容: 购物车表,添加一条数据, 字段有会员id, 商品skuid, 商品配送方式, 添加的数量, 添加时间, 商品信息(图片,商品名称, sku名称,skuNo,商品价格, 商品积分, 商品邮费等商品的快照)。组织字段值和关联值: 会员id,通过token可以解出来, 商品skuId查sku表, 数量前端传过来, 时间系统时间, 商品信息查出来。校验阶段,要校验的对象, 1.用户: 是否正常, 商品是否上架 。 2:购物车 商品是否已经在购物车(不在才新增) 3.商品是否上架。
我们再思考一下修改购物车的逻辑。要的结果是,用户选择修改什么,相应购物车表的什么信息就修改。比如skuId的修改,商品数量的修改,配送方式的修改等。所以同样的,我们在这里也要先校验参数,校验用户,校验商品,最后入库。
删除购物车,这里有的设计是用物理删除,也有的是逻辑删除。逻辑删除需要提前考虑的就是,数据的不断膨胀,因为数据的最大值,是用户数量和商品数量的乘积。
查询购物车信息。这里的查询购物车,一般只有列表接口就可以了,这里需要考虑,购物车是每次都查一次数据库还是缓存上呢。答案当然是加缓存。但是加上缓存之后,什么时候清除缓存,缓存多长时间,也是我们需要考虑的。商城缓存的使用,可以参考商城项目业务分析使用缓存 这篇文章。
以上就是关于购物车业务的分析。
第三、业务总结
购物车业务是商城里面相对比较容易一些的业务,但是,一个高性能的购物车模块的设计,对于架构和开发来说,也是非常值得思考的。通过商城购物车的分析,希望我们对商城项目有一个更深的认识。
今天我们来探讨一下商城项目当中购物车的场景,分析一下商城中购物车场景的业务实现以及要注意的问题。首先想聊一下部分开发同学对购物车业务的一个普遍的误区。部分没有开发过购物车业务的小伙伴会认为,购物车业务有什么好分析的,不就是简单的增删改查吗?一旦听到这样的回答,往往几乎可以断定,这位是没有实际开发过购物车业务,下面,我们来分析一下,购物车有哪些业务,我们需要注意些什么。(因为商品购物车关联的就是商城的订单创建,具体可以查看 商城项目的业务分析创建订单这篇文章。
今天尹白和大家一起分析商城项目中的创建订单的业务.通过这次对商城服务的核心业务中的创建订单的分析和解刨,对商城的订单有一个全面的认识。在商城业务当中,创建订单的接口,可以说是整个商城的业务当中最重要的接口。通过创建订单,真正建立了一个商品与用户的联系。
今天我们分析一下,商城项目的业务中,必不可少的支付环节,现在主流的微信支付,几乎是每一个商城项目都必备的支付方式,我们来分析一下微信支付的业务。项目中的支付,一般都会独立成一个模块,很多时候会独立成一个服务。因为调用支付的业务线一般都有好几条,比如商城下单后支付订单,比如商城购买高级会员或者续费,比如saas服务中购买某个插件或者某些功能等等。这些业务都会用到支付,没必要把支付放到商城模块下,更好的做法是把支付抽离出来,和各个模块形成松耦合。
今天我们聊一聊商城项目的业务中关于缓存的使用。在前面的内容中,我们已经介绍过商城业务中的核心接口,创建订单,https://www.inbai.net/article/141.html,在这篇文章里,我们详细介绍了创建订单的流程,不过我们更多的讨论的是业务分析,而没有深入去研究创建订单的性能。那么,今天我们就关于商城项目的性能方面,展开我们的话题,也就是在合适的地方使用上合适的缓存机制。