购物车系统

购物车系统

增、删、改、查

添加购物车业务逻辑:

  在购物车系统创建一个拦截器,来判断当前用户有没有登录,不管登录不登录,都要能够使用购物车。这里的拦截并不是用来拦截请求,而是判断用户有没有登录,并把登录用户信息存入request中。

 

拦截器:

1. Cookie中取token

2. 如果没有取到token,未登录状态,直接放行

3. 如果取到token,需要调用sso系统的服务,根据token查用户信息

① 如果查不到,说明登录已过期,直接放行

② 如果查到,说明用户已登录,把用户信息放到request中,放行。

Controller

1. 判断用户是否登录(通过判断request中是否有user对象)

2. 如果是登录状态,将添加到购物车中的商品信息存入redis(以hash数据类型:userId,itemId,item对象的json格式

① 判断商品是否存在(根据userIditemId去查redis

② 如果存在,商品数量相加

③ 如果不存在,根据商品id从数据库取商品信息,并将之以hash类型存入redis

④ 返回添加购物车成功页面

3. 如果是未登录状态,将添加到购物车中的商品信息存入Cookie

① Cookie中取出商品列表

② 遍历商品列表,如果找到对应商品,数量加1

③ 如果找不到对应商品,说明Cookie中该商品不存在,根据商品id查询商品信息,得到一个商品对象,添加到商品列表中,写入Cookie

④ 返回添加购物车成功页面

查询购物车业务逻辑:

拦截器:

1. Cookie中取token

2. 如果没有取到token,未登录状态,直接放行

3. 如果取到token,需要调用sso系统的服务,根据token查用户信息

① 如果查不到,说明登录已过期,直接放行

② 如果查到,说明用户已登录,把用户信息放到request中,放行。

Controller

1. 判断用户是否登录(通过判断request中是否有user对象)

2. 如果是登录状态

① Cookie中取购物车列表

② 如果不为空,把cookie中的购物车商品和服务端的购物车商品合并,并把cookie中的购物车数据删除

③ 从服务端取出商品列表,把商品列表传给页面

3. 如果是未登录状态

① Cookie中取出购物车列表

② 把商品列表传给页面

修改购物车中商品数量业务逻辑:

拦截器:

1. Cookie中取token

2. 如果没有取到token,未登录状态,直接放行

3. 如果取到token,需要调用sso系统的服务,根据token查用户信息

① 如果查不到,说明登录已过期,直接放行

② 如果查到,说明用户已登录,把用户信息放到request中,放行。

Controller:

1. 判断用户是否登录(通过判断request中是否有user对象)

2. 如果是登录状态

① 根据userIditemIdredis中取出商品信息

② 更新商品数量

③ 写人redis

3. 如果是未登录状态

① Cookie中取出商品列表

② 遍历商品列表找到对应商品

③ 更新商品数量

④ 将商品列表写入cookie

删除购物车商品的业务逻辑:

拦截器:

1. Cookie中取token

2. 如果没有取到token,未登录状态,直接放行

3. 如果取到token,需要调用sso系统的服务,根据token查用户信息

① 如果查不到,说明登录已过期,直接放行

② 如果查到,说明用户已登录,把用户信息放到request中,放行。

Controller:

1. 判断用户是否登录(通过判断request中是否有user对象)

2. 如果是登录状态

① 根据userIditemIdredis中存的数据删除掉

② 跳转到删除购物车成功页面

3. 如果是未登录状态

① Cookie中取出商品列表

② 遍历商品列表,找到对应商品

③ 删除商品

④ 再将商品列表写入Cookie

⑤ 跳转到删除购物车成功页面

猜你喜欢

转载自blog.csdn.net/lz1170063911/article/details/80058912