淘淘商城:直接修改购物车

标签: JAVA

淘淘商城项目视频中没有完成的功能,直接修改购物车的数量

1、Service接口增加一个方法

 

2、实现该方法

	@Override
	public TaotaoResult updateCartItem(long itemId, int num, HttpServletRequest request, HttpServletResponse response) {
		//取商品信息
				CartItem cartItem = null;
				//取购物车商品列表
				List<CartItem> itemList = getCartItemList(request);
				//判断购物车商品列表中是否存在此商品
				for (CartItem cItem : itemList) {
					//如果存在此商品
					if (cItem.getId() == itemId) {
						//增加商品数量
						cItem.setNum(num);
						cartItem = cItem;
						break;
					}
				}
				if (cartItem == null) {
					cartItem = new CartItem();
					//根据商品id查询商品基本信息。
					String json = HttpClientUtil.doGet(REST_BASE_URL + ITEM_INFO_URL + itemId); 
					//把json转换成java对象
					TaotaoResult taotaoResult = TaotaoResult.formatToPojo(json, TbItem.class);
					if (taotaoResult.getStatus() == 200) {
						TbItem item = (TbItem) taotaoResult.getData();
						cartItem.setId(item.getId());
						cartItem.setTitle(item.getTitle());
						cartItem.setImage(item.getImage() == null ? "":item.getImage().split(",")[0]);
						cartItem.setNum(num);
						cartItem.setPrice(item.getPrice());
					}
					//添加到购物车列表
					itemList.add(cartItem);
				}
				//把购物车列表写入cookie
				CookieUtils.setCookie(request, response, "TT_CART", JsonUtils.objectToJson(itemList), true);
				
				return TaotaoResult.ok();
	}

3、增加Controller中的方法

	@RequestMapping("/update/{itemId}")
	public String updateCartItem(@PathVariable Long itemId, 
			@RequestParam(defaultValue="1")Integer num, 
			HttpServletRequest request, HttpServletResponse response) {
		TaotaoResult result = cartService.updateCartItem(itemId, num, request, response);
		return "redirect:/cart/cart.html";
	}

 4、修改cart.js文件

5、测试

在文本框中输入数量回车,数量修改成功,总价也相应发生变化。

刷新页面,数量总价保持不变,cookie写入成功,测试完成。

版权声明:本文为qq_41595972原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_41595972/article/details/82016028