码迷,mamicode.com
首页 > 其他好文 > 详细

(十七)将商品添加到购物车

时间:2017-10-13 10:17:13      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:使用   tco   put   get   tor   nta   ice   arc   定向   

需求:
    在商品详情页面上,输入购买的数量,点击加入购物车,在购物车页面上展示里面所有的商品
分析:
    涉及的实体:
        购物车 购物车项 商品
        购物车中的内容
            购物车项的map集合(map<商品的id,购物车项>)
            总金额
            
            add2Cart(购物车项)
            removeFromCart(String 商品的id)
            clearCart() 
        
        购物项中的内容
            商品对象
            购买数量
            小计
步骤分析:
    1.商品详情页面,输入购买的数量,点击加入购物车
        /store/cart?method=add&pid=??&count=??
    2.在cartservlet中的add方法操作
        先获取两个参数 pid    和 count
        调用ProductService 通过id获取一个商品
        拼装CartItem
            Product--查询出来
            count--传递过来了
            suctotal--计算
    3.获取购物车,调用add2Cart(cartitem)
    4.页面跳转
        重定向 /jsp/cart.jsp

创建实体

  com.louis.domain.CartItem

  

package com.louis.domain;

import java.io.Serializable;
/**
 * 购物车项
 * @author Administrator
 *
 */
public class CartItem implements Serializable{
    private Product product;//商品对象
    private Integer    count;//购买数量
    private Double    subtotal=0.0;//小计
    
    public Product getProduct() {
        return product;
    }
    public void setProduct(Product product) {
        this.product = product;
    }
    public Integer getCount() {
        return count;
    }
    public void setCount(Integer count) {
        this.count = count;
    }
    public Double getSubtotal() {
        return product.getShop_price()*count;
    }
    
    public CartItem(Product product, Integer count) {
        this.product = product;
        this.count = count;
    }
    public CartItem() { }
    
    
    
}

com.louis.domain.Cart

package com.louis.domain;

import java.io.Serializable;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map;

public class Cart implements Serializable{
    //存放购物车项的集合  key:商品的id  cartitem:购物车项   使用map集合便于删除单个购物车项
    private Map<String, CartItem> map=new LinkedHashMap<>();
    
    //总金额
    private Double total=0.0;
    
    /**
     * 获取所有的购物车项
     * @return
     */
    public Collection<CartItem> getItmes(){
        return  map.values();
    }
    /**
     * 添加到购物车
     * @param item 购物车项
     */
    public void add2Cart(CartItem item){
        //1.先判断购物车中有无该商品
        //1.1先获取商品的id
        String pid = item.getProduct().getPid();
        if(map.containsKey(pid)){
            ////设置购买数量 需要获取该商品之前的购买数量+现在的购买数量(item.getCount)
            //获取购物车中购物车项
            CartItem oItem = map.get(pid);
            oItem.setCount(oItem.getCount()+item.getCount());
        }else{
            //没有 将购物车项添加进去
            map.put(pid, item);
        }
        
        //2.添加完成之后 修改金额
        total+=item.getSubtotal();
    }
    
    /**
     *  从购物车删除指定购物车项
     * @param pid 商品的id
     */
    public void removeFromCart(String pid){
        //1.从集合中删除
        CartItem item = map.remove(pid);
        
        //2.修改金额
        total-=item.getSubtotal();
    }
    
    /**
     * 清空购物车
     */
    public void clearCart(){
        //1.map置空
        map.clear();
        
        //2.金额归零
        total=0.0;
    }
    
    

    public Map<String, CartItem> getMap() {
        return map;
    }

    public void setMap(Map<String, CartItem> map) {
        this.map = map;
    }

    public Double getTotal() {
        return total;
    }

    public void setTotal(Double total) {
        this.total = total;
    }
    
    
}

 

问题

map集合的使用

(十七)将商品添加到购物车

标签:使用   tco   put   get   tor   nta   ice   arc   定向   

原文地址:http://www.cnblogs.com/Michael2397/p/7659360.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!