电商-购物车解析(12)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_44050355/article/details/100530112

电商第十二天;
合并购物车:

	1.	看看未登录的时候,是否有购物车存在!
	2.	如果未登录的情况下有购物车存在,则进行合并。
	3.	合并之后,将未登录之后的购物车删除!
	
	登录:
		合并:未登录---登录
		合并条件:商品Id 相同
		
		联想(Lenovo)拯救者R720 2
		华为小米手机一代 1
		小米手机1205一代 1
		
		合并之后:
			
		联想(Lenovo)拯救者R720 2
		华为小米手机一代 1
		小米手机1205一代 2
		plus	1
		华为小米手机二代 4
		
		
	未登录:
		华为小米手机二代 4
		1205一代 1
		plus	1
		
判断购物车勾选状态
	控制器:
	 http://cart.gmall.com/checkCart
	功能分析:
		1.	user:1:cart 中的所有商品 循环遍历, 将用户选择的状态赋值给isChecked、  th:checked="${cartInfo.isChecked}==1
		2.	将被选中的商品,在缓存中从新存储一份:user:1:checked  
			2.1	给结算下订单的时候使用!user:1:checked 。

点击去结算

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述功能–合并购物车
由于加入购物车时,用户可能存在登录和未登录两种情况,登录前在cookie中保存了一部分购物车信息,如果用户登录了,那么对应的要把cookie中的购物车合并到数据库中,并且刷新缓存。

思路:用数据库中的购物车列表与传递过来的cookie里的购物车列表循环匹配。
能匹配上的数量相加
匹配不上的插入到数据库中。
最后重新加载缓存

增加判断如果用户是登录状态的,但是cookie里却还有购物车,说明需要把cookie中的购物车合并进来,同时把cookie中的清空。

选中状态的变更
用户每次勾选购物车的多选框,都要把当前状态保存起来。由于可能会涉及更频繁的操作,所以这个勾选状态不必存储到数据库中。保留在缓存状态即可。
同样这里要区分,用户登录和未登录状态。
如果登录,修改缓存中的数据,如果未登录,修改cookie中的数据。
把对应skuId的购物车的信息从redis中取出来,反序列化,修改isChecked标志。
再保存回redis中。
同时保存另一个redis的key 专门用来存储用户选中的商品,方便结算页面使用。

点击结算要做的收尾工作
要解决用户在未登录且购物车中有商品的情况下,直接点击结算。
所以不能直接跳到结算页面,要让用户强制登录后,检查cookie并进行合并后再重定向到结算页面

合并购物车的时候,勾选状态可能会丢掉,因为DB中没有存储!

猜你喜欢

转载自blog.csdn.net/weixin_44050355/article/details/100530112
今日推荐