博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
商品加入购物车表结构设计
阅读量:6363 次
发布时间:2019-06-23

本文共 3906 字,大约阅读时间需要 13 分钟。

如图所示:

Product(绿色框)是每件商品的信息,对应数据库中的product每一项,不是重点

CartItem(红色框)是每一个购物项,也就是你点击加入购物车的所有信息,包括Product,还有购买数量,和购买这个商品的总价格 重点

Cart(蓝色框)是购物车,也是你本次购买所有商品的总的信息,包括CartItem,和所有购物项的总金额 重点

CartItem实体类:

public class CartItem {
//购物项 private Product product;//这个购物项中的商品信息 private int buyNum;//购买数量 private double subtotal;//总价格 public Product getProduct() { return product; } public void setProduct(Product product) { this.product = product; } public int getBuyNum() { return buyNum; } public void setBuyNum(int buyNum) { this.buyNum = buyNum; } public double getSubtotal() { return subtotal; } public void setSubtotal(double subtotal) { this.subtotal = subtotal; } }

Cart实体类:

import java.util.HashMap;import java.util.Map;public class Cart {
//购物车 //该购物车中存储的n个购物项 用Map集合是为了之后业务操作 //Map中的key是String类型,存放的是购物项中商品的pid(主键)为了之后多次加入该商品方便累加 private Map
cartItems = new HashMap
(); //n个购物项的总计 private double total; public Map
getCartItems() { return cartItems; } public void setCartItems(Map
cartItems) { this.cartItems = cartItems; } public double getTotal() { return total; } public void setTotal(double total) { this.total = total; }}

商品信息页面:

${product.pname}
编号:${product.pid}
亿家价:
¥:${product.shop_price}元/份 参 考 价:
¥${product.market_price}元/份
促销:
限时抢购
白色
购买数量:
 收藏商品

点击加入购物车的逻辑:

public void addProductToCart(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        HttpSession session = request.getSession();    ProductService service = new ProductService();    //获得要放到购物车的商品的pid    String pid = request.getParameter("pid");    //获得该商品的购买数量    int buyNum = Integer.parseInt(request.getParameter("buyNum"));    //获得product对象    Product product = service.findProductByPid(pid);    //计算小计    double subtotal = product.getShop_price()*buyNum;    //封装CartItem    CartItem item = new CartItem();    item.setProduct(product);    item.setBuyNum(buyNum);    item.setSubtotal(subtotal);    //获得购物车---判断是否在session中已经存在购物车    Cart cart = (Cart) session.getAttribute("cart");    if(cart==null){        cart = new Cart();    }    //将购物项放到车中---key是pid    //先判断购物车中是否已将包含此购物项了 ----- 判断key是否已经存在    //如果购物车中已经存在该商品----将现在买的数量与原有的数量进行相加操作    Map
cartItems = cart.getCartItems(); double newsubtotal = 0.0; if(cartItems.containsKey(pid)){ //取出原有商品的数量 CartItem cartItem = cartItems.get(pid); int oldBuyNum = cartItem.getBuyNum(); oldBuyNum+=buyNum; cartItem.setBuyNum(oldBuyNum); cart.setCartItems(cartItems); //修改小计 //原来该商品的小计 double oldsubtotal = cartItem.getSubtotal(); //新买的商品的小计 newsubtotal = buyNum*product.getShop_price(); cartItem.setSubtotal(oldsubtotal+newsubtotal); }else{ //如果车中没有该商品 cart.getCartItems().put(product.getPid(), item); newsubtotal = buyNum*product.getShop_price(); } //计算总计 double total = cart.getTotal()+newsubtotal; cart.setTotal(total); //将车再次访问session session.setAttribute("cart", cart); //直接跳转到购物车页面 response.sendRedirect(request.getContextPath()+"/cart.jsp");}

 

转载于:https://www.cnblogs.com/ms-grf/p/7209643.html

你可能感兴趣的文章
HDU 1538 A Puzzle for Pirates(海盗分金问题)
查看>>
C# Web Forms - Using jQuery FullCalendar
查看>>
H5移动端知识点总结
查看>>
Sublime-Text-2-pydocstring --- 自动生成python docstring的插件
查看>>
初涉c#设计模式-Observer Pattern-从公司管理系统删单提醒开始
查看>>
UNIX进程环境
查看>>
命名空间和定义和使用
查看>>
学习面试题Day03
查看>>
我最喜欢的jQuery插件模板
查看>>
【云计算】Docker 多进程管理方案
查看>>
C/C++中经常使用的字符串处理函数和内存字符串函数
查看>>
[LeetCode] Best Meeting Point 最佳开会地点
查看>>
基于InstallShield2013LimitedEdition的安装包制作
查看>>
【转】从Shell脚本内部将所有标准输出及标准错误显示在屏幕并同时写入文件的方法...
查看>>
python内存管理
查看>>
iOS开发小技巧--利用MJExtension解决数据结构复杂的模型转换
查看>>
Python中的图形库
查看>>
Linux操作系统分析 ------------------中国科技大学
查看>>
Apache多站点实现原理和配置
查看>>
javascript类型系统——包装对象
查看>>