11.更新和刪除購物車

表現(xiàn)層

    
    /**
     * 更新購物車
     */
    public E3Result updateCartNum(long userId, long itemId, int num) {
        //根據用戶id查詢用戶列表
        String json = jedisClient.hget(REDIS_CART_PRE+":"+userId, itemId+"");
        //更新商品數(shù)量
        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();
    }
表現(xiàn)層的實現(xiàn)
/**
     * 更新購物車商品的數(shù)量
     */
    @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.更新數(shù)量
                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) {
        //判斷用戶是否為登錄狀態(tài)
        TbUser user = (TbUser) request.getAttribute("user");
        //如果是登錄狀態(tài),把購物車寫入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);
                //跳出循環(huán)
                break;
            }
        }
        //把購物車列表寫入cookie
        CookieUtils.setCookie(request, response, "cart", JsonUtils.objectToJson(cartList), COOKIE_CART_EXPIRE, true);
        //返回邏輯視圖,跳轉到下面的頁面
        return "redirect:/cart/cart.html";
    }

觀察結果

圖片.png

圖片.png
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,979評論 25 709
  • 飛來小寵,超萌超可愛,大大的眼睛,能有見錢兒的眼睛四五個大??上?,不是我家,是朋友的家里,晚飯后一只小貓頭鷹飛來聊...
    純流氓藝術家閱讀 273評論 0 0
  • 小結 - 洗頭,洗衣服,做飯,練琴,學習。 明日計劃 - 去圖書館。
    301Cl閱讀 175評論 2 2
  • 拼了命的奔跑,終嗅得海棠的芬芳。 -01- 黑夜席卷了整座城市,凌晨三點筱楠從噩夢中驚醒,手心里溢滿了汗水。 從來...
    陳若男閱讀 1,618評論 24 29
  • 走南闖北若干年,慢慢地堅定了一個想法——到一個地方玩,一定要去有當?shù)靥厣牡胤?。所以,當?guī)劃日本行程的時候,完全沒...
    萬旗k閱讀 322評論 0 0

友情鏈接更多精彩內容