电商-购物车解析(12)

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

	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
		3.	将被选中的商品,在缓存中从新存储一份:user:1:checked  
			2.1	给结算下订单的时候使用!user:1:checked 。

点击去结算

电商-购物车解析(12)_第1张图片在这里插入图片描述电商-购物车解析(12)_第2张图片电商-购物车解析(12)_第3张图片电商-购物车解析(12)_第4张图片在这里插入图片描述电商-购物车解析(12)_第5张图片电商-购物车解析(12)_第6张图片功能–合并购物车
由于加入购物车时,用户可能存在登录和未登录两种情况,登录前在cookie中保存了一部分购物车信息,如果用户登录了,那么对应的要把cookie中的购物车合并到数据库中,并且刷新缓存。

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

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

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

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

合并购物车的时候,勾选状态可能会丢掉,因为DB中没有存储!电商-购物车解析(12)_第7张图片电商-购物车解析(12)_第8张图片
另一种::
电商-购物车解析(12)_第9张图片电商-购物车解析(12)_第10张图片电商-购物车解析(12)_第11张图片电商-购物车解析(12)_第12张图片电商-购物车解析(12)_第13张图片电商-购物车解析(12)_第14张图片电商-购物车解析(12)_第15张图片电商-购物车解析(12)_第16张图片电商-购物车解析(12)_第17张图片电商-购物车解析(12)_第18张图片电商-购物车解析(12)_第19张图片
在这里插入图片描述电商-购物车解析(12)_第20张图片电商-购物车解析(12)_第21张图片电商-购物车解析(12)_第22张图片电商-购物车解析(12)_第23张图片电商-购物车解析(12)_第24张图片电商-购物车解析(12)_第25张图片
电商-购物车解析(12)_第26张图片
电商-购物车解析(12)_第27张图片电商-购物车解析(12)_第28张图片
电商-购物车解析(12)_第29张图片电商-购物车解析(12)_第30张图片电商-购物车解析(12)_第31张图片在这里插入图片描述电商-购物车解析(12)_第32张图片电商-购物车解析(12)_第33张图片电商-购物车解析(12)_第34张图片

电商-购物车解析(12)_第35张图片电商-购物车解析(12)_第36张图片电商-购物车解析(12)_第37张图片电商-购物车解析(12)_第38张图片

你可能感兴趣的:(个人学习记录)