加入购物车功能

加入购物车这里的逻辑性要求很高。为什么这么说呢?下面给出解释。

第一点:加入购物车是要根据该用户进入存数据,所有在添加购物车时要先把用户id同时加入。这里要获取Session里面的用户Id。

第二点:当加入的商品在该用户就原本就存在的商品呢?是不是要进行判断用户的购物车是否存在该商品,如果存在,就拿出数量进行累加。

第三点:当使用新增语句的话,是要把原来相同的商品信息的购物车数据删掉,当然最简单的方法是直接使用更新语句,这样就不用把原来的数据删掉,新增一个数据。

第四点然后用户还未登录,点击加入购物车是不是应该提示需要登录,并可以跳转到登录页面。

说了那么多,现在肝代码吧!

<a href="" target="_blank" onclick="addShopCart();" >加入购物车</a>

然后点击时进行判断

function addShopCart(){
    //获取用户的id
	var userid=<%= session.getAttribute("userId")%>;
	if(userid==null){
		
		var statu = confirm("亲,你还未登录哦,确认登录?");
	  	if(!statu){
	  	 return false;
	 	 }
	  	else{
            //跳转到登录 页面
	  		parent.location.href = "login.jsp";
	  		
	  	}
	}
	else{
	var config={
            //发送请求的路径
			"url":"InsertShopCartServlet",
			"async":false,
			"dataType":"text",
			"type":"post",
            //把商品的id和商品的数量传到后台
			"data":{
				"productId":$("#productId").val(),
				"num":$("#num").val(),
				
			},
			"success":function(result){
				alert(result);
			},
			"error":function(xhr,status,error){
				
			}
	};	
	$.ajax(config);
}
	

先建数据库和entity类吧

类型要一致

这里我没有用到Java实现表外关联,

public class ShopCart {
	private Integer id;//主键
	private Integer userId;//用户ID
	private Integer productId;//商品Id
	
	private String productName;//商品名称
	private BigDecimal price;//商品价格
	
	private String imgUrl;//商品图片地址
	private Integer num;//商品数量
	private String productDesc;//商品详情
	private BigDecimal sum;//商品总价
	
	public BigDecimal getSum() {
		return sum;
	}
	public void setSum(BigDecimal sum) {
		this.sum = sum;
	}
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public BigDecimal getPrice() {
		return price;
	}
	public void setPrice(BigDecimal price) {
		this.price = price;
	}
	public String getProductName() {
		return productName;
	}
	public void setProductName(String productName) {
		this.productName = productName;
	}
	public Integer getProductId() {
		return productId;
	}
	public void setProductId(Integer productId) {
		this.productId = productId;
	}
	public Integer getUserId() {
		return userId;
	}
	public void setUserId(Integer userId) {
		this.userId = userId;
	}
	public String getImgUrl() {
		return imgUrl;
	}
	public void setImgUrl(String imgUrl) {
		this.imgUrl = imgUrl;
	}
	public Integer getNum() {
		return num;
	}
	public void setNum(Integer num) {
		this.num = num;
	}
	public String getProductDesc() {
		return productDesc;
	}
	public void setProductDesc(String productDesc) {
		this.productDesc = productDesc;
	}
	
}

servlet层

//统一编码
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");
        //获取session对象
        HttpSession session=request.getSession();
        //接收购物车数据
        ShopCart shopCart=new ShopCart();
        ProductService service2=new ProductService();
        ShopCartService service=new ShopCartService();
        //获取商品数量
        String shuliang=request.getParameter("num");
        //获取商品id
        String productId=request.getParameter("productId");    
        //获取用户id
        int userId=(int) session.getAttribute("userId");        
        if(productId!=null&&!productId.equals("")) {
            int id=Integer.parseInt(productId);    
            if(shuliang!=null&&!shuliang.equals("")) {
                int num=Integer.parseInt(shuliang);
                //获取商品信息
                Product product=service2.findThisShopCart(id);                                
                    //获取商品id
                    Integer Id=product.getId();
                    //获取商品名
                    String Name=product.getProductName();
                    //获取商品价格
                    BigDecimal price=product.getPrice();
                    //初始化商品的总价格
                    BigDecimal sum=price;
                    //获取图片地址
                    String imgUrl=product.getImgUrl();
                    //shopName为店铺名
                    String ShopName=product.getShopName();
                    //desc为商品详情
                    String productDesc=product.getDesc();                    
                    /*
                     * 将商品等字段添加到ShopCart类中,然后传到数据库进行处理
                     */
                    //商品价格                                
                    shopCart.setPrice(price);
                    //商品名
                    shopCart.setProductName(Name);
                    //id为商品的id                                
                    shopCart.setProductId(id);
                    //商品图片                                
                    shopCart.setImgUrl(imgUrl);
                    //用户Id
                    shopCart.setUserId(userId);
                    //商品详情
                    shopCart.setProductDesc(productDesc);
                    /*
                     * 查询该用户的所有商品
                     */
                    //根据用户Id把购物车商品查询出来
                    ShopCart shop=service.findAllShopCart(userId,Id);
                    if(shop==null) {
                        BigDecimal b1 = new BigDecimal(Integer.toString(num));
                        sum=price.multiply(b1);
                        shopCart.setSum(sum);
                        shopCart.setNum(num);
                        boolean addshopCart=service.insertShopCart(shopCart);
                        response.getWriter().write("加入购物车成功!");
                        
                        
                    }
                    else {
                        //商品在购物车里存在
                        int count=shop.getNum();
                        int shopId=shop.getId();
                        BigDecimal p=shop.getPrice();
                        num=num+count;
                        BigDecimal b1 = new BigDecimal(Integer.toString(num));
                         sum=p.multiply(b1);                            
                        //删除购物车
                        service.deleteShopCart(shopId);
                        //插入购物车表    
                        sum=price.multiply(b1);
                        shopCart.setSum(sum);
                        shopCart.setNum(num);
                        boolean addshopCart=service.insertShopCart(shopCart);
                        
                        response.getWriter().write("加入购物车成功!");
                    
                        
                    }
                    request.setAttribute("shopCart", shopCart);
                    return;

                    }        
            }  

Service层


	/*
	 * 添加购物车
	 */
	public boolean insertShopCart(ShopCart shopCart) {
		boolean num;
		num=this.dao.insertShopCart(shopCart);		
	   return num;
	}
    /*
	 * 通过用户Id和商品Id,查询购物信息
	 */
	public ShopCart findAllShopCart(Integer userId,Integer productId) {
		
		 ShopCart shop =this.dao.getShopCart(userId,productId);	
			
		return shop;
	}
    /*
	 * 根据商品Id查询购物车是否存在
	 */
	public List<ShopCart> findShopCartProduct(Integer productId) {
		List<ShopCart> list=null;
		list=this.dao.getShopCartProduct(productId);
		return list;
	}
    /*
	 * 根据购物车Id删除购物车
	 */
	public boolean deleteShopCart(Integer shopId) {
		boolean num;
		num=this.dao.deleteshopId(shopId);
		
	   return num;
	}

Dao层

    /*
	 * 根据用户Id查询购物车商品是否存在
	 */
	public List<ShopCart> getShopCartProduct(Integer productId){
		List<ShopCart> list=null;
		String sql="select * from shopCart where productId=?";
		try {
		list=(List<ShopCart>) runner.query(sql, new BeanListHandler(ShopCart.class),productId);
	
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return list;
	}
    /*
    *添加购物车
    */
	public boolean insertShopCart(ShopCart shopCart) {
		int num=0;
        //添加sql语句
		String sql="insert into shopCart (userId,productId,productName,price,num,productDesc,imgUrl,sum) value(?,?,?,?,?,?,?,?)";
		try {
		num=runner.update(sql,shopCart.getUserId(),shopCart.getProductId(),shopCart.getProductName(),shopCart.getPrice(),shopCart.getNum(),shopCart.getProductDesc(),shopCart.getImgUrl(),shopCart.getSum());
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return num>0;		
	}
    /*
	 * 根据购物车ID删除购物车的商品
	 */
	
	public boolean deleteshopId(Integer id) {
		int num=0;
		String sql="delete from shopcart where id=?";
	try {
		num = runner.update(sql,id);
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	return num>0;
	}

购物车功能就这样实现了,喜欢的话记得点赞哦!您的点赞是我努力的动力

发布了10 篇原创文章 · 获赞 11 · 访问量 383

猜你喜欢

转载自blog.csdn.net/weixin_44715643/article/details/103923032