首页>代码>ssm淘淘网电子商城项目源码>/source/taotao-cart-web/src/main/java/com/taotao/cart/controller/CartController.java
001package com.taotao.cart.controller;
002 
003import java.util.ArrayList;
004import java.util.List;
005 
006import javax.servlet.http.HttpServletRequest;
007import javax.servlet.http.HttpServletResponse;
008 
009import org.apache.commons.lang3.StringUtils;
010import org.springframework.beans.factory.annotation.Autowired;
011import org.springframework.beans.factory.annotation.Value;
012import org.springframework.stereotype.Controller;
013import org.springframework.web.bind.annotation.PathVariable;
014import org.springframework.web.bind.annotation.RequestMapping;
015import org.springframework.web.bind.annotation.RequestParam;
016import org.springframework.web.bind.annotation.ResponseBody;
017 
018import com.taotao.common.pojo.TaotaoResult;
019import com.taotao.common.utils.CookieUtils;
020import com.taotao.common.utils.JsonUtils;
021import com.taotao.pojo.TbItem;
022import com.taotao.service.ItemService;
023 
024/**
025 * 购物车管理Controller
026 * <p>Title: CartController</p>
027 * <p>Description: </p>
028 * <p>Company: www.itcast.cn</p>
029 * @version 1.0
030 */
031@Controller
032public class CartController {
033     
034    @Value("${CART_KEY}")
035    private String CART_KEY;
036    @Value("${CART_EXPIER}")
037    private Integer CART_EXPIER;
038    @Autowired
039    private ItemService itemService;
040 
041    @RequestMapping("/cart/add/{itemId}")
042    public String addItemCart(@PathVariable Long itemId,
043            @RequestParam(defaultValue="1")Integer num, HttpServletRequest request,
044            HttpServletResponse response) {
045        //取购物车商品列表
046        List<TbItem> cartItemList = getCartItemList(request);
047        //判断商品在购物车中是否存在
048        boolean flag = false;
049        for (TbItem tbItem : cartItemList) {
050            if (tbItem.getId() == itemId.longValue()) {
051                //如果存在数量相加
052                tbItem.setNum(tbItem.getNum() + num);
053                flag = true;
054                break;
055            }
056        }
057        //如果不存在,添加一个新的商品
058        if (!flag) {
059            //需要调用服务取商品信息
060            TbItem tbItem = itemService.getItemById(itemId);
061            //设置购买的商品数量
062            tbItem.setNum(num);
063            //取一张图片
064            String image = tbItem.getImage();
065            if (StringUtils.isNotBlank(image)) {
066                String[] images = image.split(",");
067                tbItem.setImage(images[0]);
068            }
069            //把商品添加到购物车
070            cartItemList.add(tbItem);
071        }
072        //把购物车列表写入cookie
073        CookieUtils.setCookie(request, response, CART_KEY, JsonUtils.objectToJson(cartItemList),
074                CART_EXPIER, true);
075        //返回添加成功页面
076        return "cartSuccess";
077    }
078     
079    private List<TbItem> getCartItemList(HttpServletRequest request) {
080        //从cookie中取购物车商品列表
081        String json = CookieUtils.getCookieValue(request, CART_KEY, true);
082        if (StringUtils.isBlank(json)) {
083            //如果没有内容,返回一个空的列表
084            return new ArrayList<>();
085        }
086        List<TbItem> list = JsonUtils.jsonToList(json, TbItem.class);
087        return list;
088    }
089     
090    @RequestMapping("/cart/cart")
091    public String showCartList(HttpServletRequest request) {
092        //从cookie中取购物车列表
093        List<TbItem> cartItemList = getCartItemList(request);
094        //把购物车列表传递给jsp
095        request.setAttribute("cartList", cartItemList);
096        //返回逻辑视图
097        return "cart";
098    }
099     
100    @RequestMapping("/cart/update/num/{itemId}/{num}")
101    @ResponseBody
102    public TaotaoResult updateItemNum(@PathVariable Long itemId, @PathVariable Integer num,
103            HttpServletRequest request, HttpServletResponse response) {
104        //从cookie中取购物车列表
105        List<TbItem> cartList = getCartItemList(request);
106        //查询到对应的商品
107        for (TbItem tbItem : cartList) {
108            if (tbItem.getId() == itemId.longValue()) {
109                //更新商品数量
110                tbItem.setNum(num);
111                break;
112            }
113        }
114        //把购车列表写入 cookie
115        CookieUtils.setCookie(request, response, CART_KEY, JsonUtils.objectToJson(cartList),
116                CART_EXPIER, true);
117        //返回成功
118        return TaotaoResult.ok();
119    }
120     
121    @RequestMapping("/cart/delete/{itemId}")
122    public String deleteCartItem(@PathVariable Long itemId, HttpServletRequest request ,
123            HttpServletResponse response) {
124        //从cookie中取购物车列表
125        List<TbItem> cartItemList = getCartItemList(request);
126        //找到对应的商品
127        for (TbItem tbItem : cartItemList) {
128            if (tbItem.getId() == itemId.longValue()) {
129                //删除商品
130                cartItemList.remove(tbItem);
131                break;
132            }
133        }
134        //把购车列表写入cookie
135        CookieUtils.setCookie(request, response, CART_KEY, JsonUtils.objectToJson(cartItemList),
136                CART_EXPIER, true);
137        //重定向到购物车列表页面
138        return "redirect:/cart/cart.html";
139    }
140}
最近下载更多
170751967  LV5 2022年6月13日
wangyunhao  LV10 2022年6月3日
lijianxin321  LV1 2022年4月25日
zhechu123  LV4 2022年3月18日
找找找找找  LV4 2022年3月16日
wanglinddad  LV55 2021年12月26日
凯文  LV5 2021年12月6日
LCFTSZ  LV3 2021年10月8日
2000103  LV4 2021年9月24日
739086737  LV5 2021年9月20日
最近浏览更多
xiaotao555555  LV3 6月22日
微信网友_7311917966446592  LV1 2024年12月25日
taoshen95  LV16 2024年12月21日
2864597851 2024年12月3日
暂无贡献等级
我是你唯一的执着  LV4 2024年11月28日
zouzou123  LV3 2024年10月18日
799743530  LV11 2024年7月10日
微信网友_5986558820093952  LV4 2024年6月29日
暂无贡献等级
xiaoxia1012  LV1 2024年6月12日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友