电商系统设计要点
一、 最主要的业务流程
1‑1购物流程
1‑2购物流程时序图
时序图详解:
1、用户开始浏览商品,需要有一个商品模块来支撑,给用户展示商品的介绍、价格等等这些信息。
2、用户把选好的商品加入购物车,这个步骤,也需要一个购物车模块来维护用户购物车中的商品。
3、 用户下单肯定需要一个订单模块来创建这个新订单。订单创建好了之后,需要把订单中的商品从购物车中删除掉。
4、订单创建完成后,需要引导用户付款,也就是发起支付流程,这里需要有一个支付模块来实现支付功能,用户成功完成支付之后,需要把订单的状态变更为“已支付”。
5、之后运营人员就可以发货了,在系统中,发货这个步骤,需要扣减对应商品的库存数量,这个功能需要库存模块来实现,发货完成后,还需要把订单状态变更为“已发货”。
6、最后,用户收货之后,在系统中确认收货,系统把订单状态变更为“已收货”,流程结束。
二、 电商系统的功能模块
2‑1电商系统功能模块图
1、 商品:维护和展示商品信息和价格。
2、 订单:维护订单信息和订单状态,计算订单金额
3、 购物车:维护用户购物车中的商品
4、 支付:负责与系统内外部的支付渠道对接,实现支付功能。
5、 库存:维护商品的库存数量和库存信息。
6、 促销:制定促销规则,计算促销优惠。
7、 用户:维护系统的用户信息,注意用户模块它是一个业务模块,一般不负责用户登录和认证,这是两个完全不同的功能。(这里的用户模块主要是维护和管理C端用户信息的模块,用户数据也是业务数据,是电商的重要业务资产,所以最好不要和登录认证的安全)
8、 账户:负责维护用户的账户余额。
9、 搜索推荐:负责商城中,搜索商品和各种列表页和促销页的组织和展示,简单的说就是决定让用户优先看到哪些商品,此模块使用一套复杂的算法来实现。
10、 报表:实现统计和分析功能,生成报表,给老板来做经营分析和决策使用。
三、 促销需要提供几个服务:
一是哪些促销可用:输入是一堆商品和用户ID,促销服务返回可用的促销:比如满减、优惠券之类的。
一个“算价”服务,输入是:一堆商品和使用的一堆促销,促销服务需要验证这些促销是否都可以使用,有没有冲突之类的,如果可用,返回的是计算完成的促销价。
这个促销价不仅包括使用促销之后的总价,还要包含每个商品的“实际优惠价(不显示给用户)”,保证:促销后的总价=Σ所有商品的实际优惠价。这个价格就是用完促销之后,每个商品的实际价格,后续退货、计算成本收益,都以这个价格为准。
这样对于购物车和订单来说,处理就比较简单了,不管你促销怎么玩儿,反正最终你告诉我用完促销之后每个商品什么价格就可以了。促销规则变来变去也不用去改订单服务。
四、 超卖问题解决思路
- 用户下单后锁定库存
- 每笔订单设置有效时间,防止用户下单但是一直不付款,导致库存一直处于锁定状态。
- 发货后减少库存
以上三点联合起来再出现超卖的可能性就很小了,粗暴的理解就是用户下单后库存就减少,用户未支付订单过期了,库存再加回来恢复。