做电商开发,怎么能不涉及到购物车和订单?没有接触之前,很多人都以为购物车是非常复杂的,其实购物车数据是很简单的,一般只会记录产品ID、会员标识、购物车标识、货品信息等最基础的数据。
本文就通过剖析Ecstore加入购物车的流程,大致梳理下普通电商系统的加入购物车流程。
注意:
1.本文介绍的是普通商品,兑换商品、团购商品等流程大致是一样的,依葫芦画瓢即可。
2.Ecstore的普通商品购物车数据保存有两种形式,在用户未登录的情况下是保存在session中的,登录后会自动更新到购物车项目表里。
3.涉及到ecstore特有的扩展的,由于本文只是介绍普通商品,大家可以选择性忽略,也可去官方文档查看扩展介绍。
下图为博主大致画了下Ecstore普通商品加入购物车时的流程图。
1.b2c_ctl_cart add()
加入购物车的对外接口,可以直接连接访问的方法。此方法中首先会对POST过来的数据进行各种验证,然后通过扩展get_data()方法处理下POST过来的加入购物车商品的数据。
2.b2c_cart_objects add_object()
算是个统一添加购物车按钮的方法,没有特殊处理,直接调用add_object()。
3.b2c_cart_object_goods add_object()
首先,获取到要加入购物车的数据的标识、会员标识;然后,对要加入购物车的数据进行验证;次之,检查购物车中是否已存在当前商品,确定是插入还是更新;最后调取 b2c_mdl_cart_objects->save()方法保存数据。
4.b2c_mdl_cart_objects save()
保存数据之前的再次验证保存的信息。
5.b2c_mdl_cart_objects parent_save()
根据是否为快速购买,是否为登录用户,将数据保存至对应的session或数据库中。快速购买商品保存在session中。
6.b2c_ctl_cart add()
加入购物车成功后,会根据不同的类型,有不同的操作。快速购买商品会直接跳转到订单确认页;普通商品回调方法,获取当前购物车的数据情况。
其实加入购物车的流程是非常简单的,只是在使用过程中“妖魔化”了。无非就是POST数据,验证信息,获取信息,验证信息,保存信息。尽量不直接保存POST数据,严密验证即可。