/**
* 展示购物车列表
* 已经登录,我们需要两个服务:一个是购物车合并,一个是//取出购物车列表
*/
@RequestMapping("/cart/cart")
public String showCatList(HttpServletRequest request,HttpServletResponse response){
//从cookie中取购物车列表
List<TbItem> cartList = getCartListFromCookie(request);
//判断用户是否是登录状态
TbUser user=(TbUser) request.getAttribute("user");
//如果是登录状态
if(user !=null){
//如果不为空,把cookie中的购物车商品和服务端的购物车商品合并
cartService.mergeCart(user.getId(), cartList);
//把cookie中的购物车删除
CookieUtils.deleteCookie(request, response, "cart");
}
//从服务端取购物车列表
cartList= cartService.getCartList(user.getId());
//如果是未登录状态
//把列表传递给页面
request.setAttribute("cartList", cartList);
//返回逻辑视图
return "cart";
}
购物车合并的服务
/**
* 合并购物车
*/
public E3Result mergeCart(long userId, List<TbItem> itemList) {
//1.遍历商品列表
//2.把列表添加到购物车
//3.判断购物车中是否有此商品
//4.如果有,数量相加
//5.如果没有,添加新的商品
for(TbItem item :itemList){
addCart(userId,item.getId(), item.getNum());
}
//6.返回成功
return E3Result.ok();
}
//取出购物车列表
/**
* 返回购物车列表
*/
public List<TbItem> getCartList(long userId) {
//根据用户id查询用户列表
List<String> jsonList = jedisClient.hvals(REDIS_CART_PRE+":"+userId);
List<TbItem> itemList =new ArrayList();
for (String string : jsonList) {
//创建一个TbItem对象
TbItem item = JsonUtils.jsonToPojo(string, TbItem.class);
itemList.add(item);
}
return itemList;
}