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

Posted Michael2397

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(十七)将商品添加到购物车相关的知识,希望对你有一定的参考价值。

需求:
    在商品详情页面上,输入购买的数量,点击加入购物车,在购物车页面上展示里面所有的商品
分析:
    涉及的实体:
        购物车 购物车项 商品
        购物车中的内容
            购物车项的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集合的使用

以上是关于(十七)将商品添加到购物车的主要内容,如果未能解决你的问题,请参考以下文章

微信小程序 将商品添加到购物车 数据怎么存

电商网站中添加商品到购物车功能模块2017.12.8

将购物车商品数据发送到 PayPal WooCommerce

Alexa - 允许用户将商品添加到亚马逊购物篮/购物车。需要帮助

作业二:优化购物车:用户入口:1.将商品的信息存到文件中;2.将已经购买的商品余额记录存到文件中。商家入口:1.可以添加商品;2.可以修改商品的价格

Paypal 以折扣方式将多个商品添加到购物车