谷粒商城学习笔记--购物车相关功能

301 阅读2分钟

数据模型分析

7d139d6c4baf442c912294727b846e6f.png

一:

购物车Vo

购物项Vo

商品集合信息Vo

二:

用户To

三:

写一个拦截器判断用户是否登录

四:

若当前用户为已经注册登录过的用户而不是临时用户,需要合并临时购物车的数据。

新建一个拦截器并注册

新建threadLocal来共享线程数据,在preHandle拦截方法执行完,在threadLocal共享用户To信息。 首先,在preHandle方法中,如果用户已经登录,从session中获取用户信息id,设置进用户To信息

public static ThreadLocal<UserInfoTo> toThreadLocal = new ThreadLocal<>();

然后无论是否登录,如果成功获取到了cookie中的临时用户的唯一标识,设置进用户To信息。

否则给一个uuid来作为用户唯一标识设置进用户To,这时候是临时用户。

在业务执行结束之后,若当前用户是临时用户或者已登录但临时用户标识为false,在postHandle方法设置他的唯一标识信息。

添加商品到购物车

首先在购物车方法中获取要操作的购物车信息

通过ThreadLocal获取用户信息,若是成功获取用户信息id,说明是注册登录的用户,购物车标识为用户id,否则说明这个用户是临时用户,购物车标识为UserKey

若是Redis中已经存在这种商品,根据新增的数量修改商品数量即可

若是Redis中不存在这种商品,开启两个异步任务,分别调用远程接口去查询商品信息和商品的销售属性

远程调用接口查询相关信息

购物车表单重复提交问题解决

重定向到添加成功页面

其他功能

对购物车数据项的删改查及选中