淘淘商城:直接修改购物车
程序员文章站
2022-03-04 20:01:10
...
淘淘商城项目视频中没有完成的功能,直接修改购物车的数量
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写入成功,测试完成。