电商购物车两种渲染方式
一、存redis:流程:购物车/立即购买–>结算界面–>支付界面
方法一
每一次添加单个商品商品到购物车或者直接购买商品,都需要调用后端接口,把数据存入redis里面
1 直接购买(前端需调用两个接口)–》进入结算界面
- 接口一:直接创建一个实体类CartDTO,把商品的相关数据放入进去,然后存入缓存中
- 接口二:获取刚刚存入缓存的数据,然后进行渲染购物车相应的操作返回给前端接口
- 如果修改地址
- 前端调用用户所有地址
- 当用户选中好地址后,调用刚刚存入缓存的数据,把地址也给存进去
- 这时前端再次请求缓存的数据,就是最新的数据了
- 如果添加优惠券等活动,和修改地址一样操作
2.购物车购买
2.1 存入购物车
- 首先获取缓存,判断购物车是否有数据。如果有则解析后再添加,如果没有则默认生成基础数据
- 把新添加的商品放入缓存中
2.2 结算界面
- 获取购物车缓存的数据,然后进行渲染购物车
- 如果修改地址
- 前端调用用户所有地址
- 当用户选中好地址后,调用购物车缓存的数据,把地址也给存进去
- 这时前端再次请求缓存的数据,就是最新的数据了
- 如果添加优惠券等活动,和修改地址一样操作相应的操作返回给前端接口
方法二
前端把购物车数据全部计算完成后再传给后端
1 直接购买与购物车购买一样操作
- 拿去前端传来的数据
- 先判断有没有实体类CartDTO缓存数据,如果有则直接拿取,如果没有则默认生成基础数据
- 判断CartDTO存有没有地址,如果有则不管,如果没有默认传一个用户地址(如果用户地址也没有则不传
- 拿取前端传进来的数据覆盖原来缓存获取的数据,并且进行各种逻辑判断,再把数据存到缓存中,然后把数据返回给前端
- 如果修改地址
- 前端调用用户所有地址
- 当用户选中好地址后,调用CartDTO缓存的数据,把地址也给存进去
- 这时前端再次请求缓存的数据,就是最新的数据了
二、存数据库
数据库有购物车表,里面放商品的id,skuid,选择的数量,规格等信息
- 当点击结算时,把勾选的商品的购物车id传到后端进行查询。
- 当添加数量时,则把商品的购物车id和数量传到后端进行修改。