实体类
private String sellerId;
private String sellerName;
private List orderItemList;
controller
//合并购物车后的逻辑
@RequestMapping(“findCartList”)
public List findCartList(){
List cartList = new ArrayList<>();
String userId = SecurityContextHolder.getContext().getAuthentication().getName();
//不管用户有没有登录,我们都先查询cookie购物车
//查询cookies购物
String cartListStr = CookieUtil.getCookieValue(request, "cartList", true);
//如果找到了购物车
if (StringUtils.isNotBlank(cartListStr)) {
cartList = JSON.parseArray(cartListStr, Cart.class);
}
//如果用户没有登录
if("anonymousUser".equals(userId)){
System.out.println("读取了cookie的购物车数据...");
}else{
System.out.println("读取了Redis的购物车数据...");
//查询登录版的购物车
List<Cart> redisCartList = cartService.findCartListFromRedis(userId);
//如果cookie中有购物车数据,合并
if(cartList.size() > 0){
System.out.println("购物车合并...");
//开始合并购物车
cartList = cartService.mergeCartList(cartList, redisCartList);
//重新存储购物车到redis
cartService.saveCartListToRedis(userId, cartList);
//清空cookie购物车,这一步非常关键,是保证,购物车在登录与未登录间,只会合并一次
CookieUtil.deleteCookie(request,response,"cartList");
}else{
return redisCartList;
}
}
r