11.更新和删除购物车

表现层

    
    /**
     * 更新购物车
     */
    public E3Result updateCartNum(long userId, long itemId, int num) {
        //根据用户id查询用户列表
        String json = jedisClient.hget(REDIS_CART_PRE+":"+userId, itemId+"");
        //更新商品数量
        TbItem item = JsonUtils.jsonToPojo(json, TbItem.class);
        item.setNum(num);
        //写入Redis 
        jedisClient.hset(REDIS_CART_PRE+":"+userId, itemId+"",JsonUtils.objectToJson(item));
        return E3Result.ok();
    }

    /**
     * 删除购物车
     */
    public E3Result deleteCartItem(long userId, long itemId) {
        //根据用户id查询用户列表
        jedisClient.hdel(REDIS_CART_PRE+":"+userId, itemId+"");
        return E3Result.ok();
    }
表现层的实现
/**
     * 更新购物车商品的数量
     */
    @RequestMapping("/cart/update/num/{itemId}/{num}")
    @ResponseBody
    public E3Result updateCatNum(@PathVariable Long itemId,@PathVariable Integer num,
            HttpServletRequest request,HttpServletResponse response){
        //判断用户是否登录
        TbUser user = (TbUser) request.getAttribute("user");
            if(user !=null){
                cartService.updateCartNum(user.getId(), itemId, num);
                return E3Result.ok();
            }
        //1.取出购物车的列表
        List<TbItem> itemList = getCartListFromCookie(request);
        //2.遍历列表,找到对应的商品
        for(TbItem item :itemList){
            if(item.getId().longValue() == itemId){
                //3.更新数量
                item.setNum(num);
                break;
            }
        }
        //4.把购物车列表写回Cookie
        CookieUtils.setCookie(request, response,"cart",JsonUtils.objectToJson(itemList),COOKIE_CART_EXPIRE,true);
        //5.返回成功
        return E3Result.ok();
        
    }
    
    /**
     * 删除购物车商品
     */
    @RequestMapping("/cart/delete/{itemId}")
    public String deleteCartItem(@PathVariable Long itemId, HttpServletRequest request,
            HttpServletResponse response) {
        //判断用户是否为登录状态
        TbUser user = (TbUser) request.getAttribute("user");
        //如果是登录状态,把购物车写入Redis
        if (user != null) {
            //保存到服务器
            cartService.deleteCartItem(user.getId(), itemId);
            //返回逻辑视图
            return "redirect:/cart/cart.html";
        }
        //从cookie中取购物车列表
        List<TbItem> cartList = getCartListFromCookie(request);
        //遍历列表,找到要删除的商品
        for (TbItem tbItem : cartList) {
            if (tbItem.getId().longValue() == itemId) {
                //删除商品
                cartList.remove(tbItem);
                //跳出循环
                break;
            }
        }
        //把购物车列表写入cookie
        CookieUtils.setCookie(request, response, "cart", JsonUtils.objectToJson(cartList), COOKIE_CART_EXPIRE, true);
        //返回逻辑视图,跳转到下面的页面
        return "redirect:/cart/cart.html";
    }

观察结果

图片.png

图片.png
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,986评论 25 709
  • 飞来小宠,超萌超可爱,大大的眼睛,能有见钱儿的眼睛四五个大。可惜,不是我家,是朋友的家里,晚饭后一只小猫头鹰飞来聊...
    纯流氓艺术家阅读 1,688评论 0 0
  • 小结 - 洗头,洗衣服,做饭,练琴,学习。 明日计划 - 去图书馆。
    301Cl阅读 1,256评论 2 2
  • 拼了命的奔跑,终嗅得海棠的芬芳。 -01- 黑夜席卷了整座城市,凌晨三点筱楠从噩梦中惊醒,手心里溢满了汗水。 从来...
    陈若男阅读 5,411评论 24 29
  • 走南闯北若干年,慢慢地坚定了一个想法——到一个地方玩,一定要去有当地特色的地方。所以,当规划日本行程的时候,完全没...
    万旗k阅读 1,859评论 0 0

友情链接更多精彩内容