From 65fb5e95c31fa031ffe37ac9e5fbb5f59f40fa83 Mon Sep 17 00:00:00 2001 From: nxist2202005014 <1463859337@qq.com> Date: Wed, 26 Jun 2024 09:54:32 +0800 Subject: [PATCH] ADD file via upload --- CartFrame.java | 200 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 200 insertions(+) create mode 100644 CartFrame.java diff --git a/CartFrame.java b/CartFrame.java new file mode 100644 index 0000000..bce745b --- /dev/null +++ b/CartFrame.java @@ -0,0 +1,200 @@ +package flowershop.view; + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.FlowLayout; +import java.awt.Font; +import java.util.Date; +import java.util.Map; +import java.util.Set; + +import javax.swing.JButton; +import javax.swing.JLabel; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.table.TableModel; + +import flowershop.dao.OrderDao; +import flowershop.dao.OrderDetailDao; +import flowershop.model.Flower; +import flowershop.model.Order; +import flowershop.model.OrderDetail; +import flowershop.model.User; +import flowershop.dao.FlowerDao; +import flowershop.daoimpl.FlowerDaoImpl; +import flowershop.daoimpl.OrderDaoImpl; +import flowershop.daoimpl.OrderDetailDaoImpl; + +//商品购物车窗口 + public class CartFrame extends MyFrame { + + private JTable table; + + // 购物车数据 + private Object[][] data; + + // 创建商品Dao + private FlowerDao Dao = new FlowerDaoImpl(); + + // 购物车,键是选择的商品Id,值是商品的数量 + private Map cart; + // 引用到上级Frame(ProductListFrame) + FlowerListFrame flowerListFrame; + + public CartFrame(Map cart, FlowerListFrame flowerListFrame) { + + super("商品购物车", 1000, 700); + this.cart = cart; + this.flowerListFrame = flowerListFrame; + + JPanel topPanel = new JPanel(); + topPanel.setBackground(new Color(250,220,230)); + FlowLayout fl_topPanel = (FlowLayout) topPanel.getLayout(); + fl_topPanel.setVgap(10); + fl_topPanel.setHgap(20); + getContentPane().add(topPanel, BorderLayout.NORTH); + + JButton btnReturn = new JButton("返回商品列表"); + btnReturn.setFont(new Font("微软雅黑", Font.PLAIN, 15)); + topPanel.add(btnReturn); + + JButton btuSubmit = new JButton("提交订单"); + // 注册【提交订单】按钮的ActionEvent事件监听器 + btuSubmit.addActionListener(e -> { + // 生成订单 + generateOrders(); + JLabel label = new JLabel("订单已经生成,等待付款。"); + btuSubmit.setFont(new Font("微软雅黑", Font.PLAIN, 15)); + if (JOptionPane.showConfirmDialog(this, label, "信息", JOptionPane.YES_NO_OPTION) == JOptionPane.NO_OPTION) { + // TODO 付款 + System.out.println("未付款"); + System.exit(0); + } else { + System.out.println("付款"); + System.exit(1); + } + }); + topPanel.add(btuSubmit); + + JScrollPane scrollPane = new JScrollPane(); + getContentPane().add(scrollPane, BorderLayout.CENTER); + scrollPane.setViewportView(getTable()); + + + + // 注册【返回商品列表】按钮的ActionEvent事件监听器 + btnReturn.addActionListener(e -> { + // 更新购物车 + for (int i = 0; i < data.length; i++) { + // 商品编号 + String productid = (String) data[i][0]; + // 数量 + Integer quantity = (Integer) data[i][3]; + cart.put(productid, quantity); + } + + this.flowerListFrame.setVisible(true); + this.setVisible(false); + }); + + } + + // 初始化左侧面板中的表格控件 + private JTable getTable() { + + // 准备表中数据 + data = new Object[cart.size()][5]; + Set keys = this.cart.keySet(); + int indx = 0; + for (String productid : keys) { + Flower f = Dao.findById(productid); + data[indx][0] = f.getProductid();// 商品编号 + data[indx][1] = f.getName();// 商品名 + data[indx][2] = new Double(f.getPrice());// 商品单价 + data[indx][3] = new Integer(cart.get(productid));// 数量 + // 计算商品应付金额 + double amount = (double) data[indx][2] * (int) data[indx][3]; + data[indx][4] = new Double(amount); + indx++; + } + + // 创建表数据模型 + TableModel model = new CartTableModel(data); + + if (table == null) { + // 创建表 + table = new JTable(model); + table.setBackground(new Color(250,220,230)); + // 设置表中内容字体 + table.setFont(new Font("微软雅黑", Font.PLAIN, 16)); + // 设置表列标题字体 + table.getTableHeader().setFont(new Font("微软雅黑", Font.BOLD, 16)); + // 设置表行高 + table.setRowHeight(51); + table.setRowSelectionAllowed(false); + + } else { + table.setModel(model); + } + return table; + } + + // 生成订单 + private void generateOrders() { + // Example: Initialize the user before using it + MainApp.user = new User(); + String someUserId = null; + MainApp.user.setUserid(someUserId); + if (MainApp.user != null) { + String userId = MainApp.user.getUserid(); + // Continue processing with userId + } else { + // Handle the case where user is null + System.out.println("未初始化用户"); + } + + + OrderDao orderDao = new OrderDaoImpl(); + OrderDetailDao orderDetailDao = new OrderDetailDaoImpl(); + Order order = new Order(); + order.setUserid(MainApp.user.getUserid()); + // 0待付款 + order.setStatus(0); + // 订单Id是当前时间 + Date now = new Date(); + long orderid = now.getTime(); + order.setOrderid(orderid); + order.setOrderdate(now); + order.setAmount(getOrderTotalAmount()); + + // 下订单时间是数据库自动生成不用设置 + // 创建订单 + orderDao.create(order); + + for (int i = 0; i < data.length; i++) { + + OrderDetail orderDetail = new OrderDetail(); + orderDetail.setOrderid(orderid); + orderDetail.setProductid((String) data[i][0]); + orderDetail.setQuantity((int) data[i][3]); + orderDetail.setPrice((double) data[i][2]); + // 创建订单详细 + orderDetailDao.create(orderDetail); + } + } + + // 计算订单应付总金额 + private double getOrderTotalAmount() { + + double totalAmount = 0.0; + for (int i = 0; i < data.length; i++) { + // 计算商品应付金额 + totalAmount += (Double) data[i][4]; + } + return totalAmount; + } + } + +