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

本文介绍在淘淘商城项目中,如何通过增加Service接口方法和Controller方法,实现直接修改购物车商品数量的功能。详细步骤包括:修改Service接口,实现商品数量更新逻辑;在Controller中增加对应方法,处理前端请求;修改cart.js文件以支持新功能;最后进行测试确保功能正确。

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

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写入成功,测试完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值