作者:班长和丫头 | 来源:互联网 | 2023-10-10 12:20
一、总体思路分析二、创建订单1)servletpublicclassOrderServletextendsBeanServlet{privateOrderServ
一、总体思路分析
二、创建订单
1)servlet
public class OrderServlet extends BeanServlet {private OrderService orderService = new OrderServiceipml();protected void creatOrder(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println(111);// 先获取Cart购物车对象Cart cart = (Cart) req.getSession().getAttribute("cart");// 获取UseridUser loginUser = (User) req.getSession().getAttribute("user");//判断用户是否登入if (loginUser == null) {//如果没登入就跳转到登入页面req.getRequestDispatcher("/pages/user/login.jsp").forward(req,resp);//如果没有登入就不再执行下面的代码了return;}Integer userId = loginUser.getId();
// 调用orderService.createOrder(Cart,Userid);生成订单String orderId = orderService.createOrder(cart, userId);req.setAttribute("orderId", orderId);// 请求转发到/pages/cart/checkout.jsp// req.getRequestDispatcher("/pages/cart/checkout.jsp").forward(req, resp);//把用户ID保存到req.getSession().setAttribute("orderId",orderId);resp.sendRedirect(req.getContextPath()+"/pages/cart/checkout.jsp");}
2)Service
/*** 生成订单** @param cart* @param userId* @return java.lang.String* @author weisn* @date 10:24*/@Overridepublic String createOrder(Cart cart, Integer userId) {// 订单号===唯一性 System.currentTimeMillis()---获取时间戳String orderId = System.currentTimeMillis() + "" + userId;// 创建一个订单对象Order order = new Order(orderId, new Date(), cart.getTotalPrice(), 0, userId);// 保存订单orderDao.saveOrder(order);// 遍历购物车中每一个商品项转换成为订单项保存到数据库for (Map.Entry entry : cart.getItems().entrySet()) {// 获取每一个购物车中的商品项CartItem cartItem = entry.getValue();// 转换为每一个订单项OrderItem orderItem = new OrderItem(null, cartItem.getName(), cartItem.getCount(), cartItem.getPrince(),cartItem.getTotalPrice(), orderId);// 保存订单项到数据库orderItemDao.saveOrderItem(orderItem);// 更新库存和销量//通过商品id去查找商品的详情Book book = bookDao.queryBookByid(cartItem.getId());//设置销售量book.setSales(book.getSales() + cartItem.getCount());//设置库存book.setStock(book.getStock() - cartItem.getCount());bookDao.updateBook(book);}//去结账的时候一般要清空购物车cart.clear();return orderId;}
3)OrderDao
/*** @Description: OrderDao实现类 // 类说明* @ClassName: OrderDaoimpl // 类名* @Author: 曾伟鸿 // 创建者* @Date: 2022/1/15 22:15 // 时间* @Version: 1.0 // 版本*/
public class OrderDaoimpl extends BaseDao implements OrderDao {@Overridepublic int saveOrder(Order order) {String sql = "insert into t_order(`order_id`,`create_time`,`price`,`status`,`user_id`) values(?,?,?,?,?)";return update(sql, order.getOrderId(), order.getCreateTime(), order.getPrice(), order.getStatus(),order.getUserId());}
}
4)OrderItemDao
/*** @Description: 实现类 // 类说明* @ClassName: OrderItemDaoimpl // 类名* @Author: 曾伟鸿 // 创建者* @Date: 2022/1/15 22:16 // 时间* @Version: 1.0 // 版本*/
public class OrderItemDaoimpl extends BaseDao implements OrderItemDao {@Overridepublic int saveOrderItem(OrderItem orderItem) {String sql = "insert into t_order_item(`name`,`count`,`price`,`total_price`,`order_id`) values(?,?,?,?,?)";return update(sql, orderItem.getName(), orderItem.getCount(), orderItem.getPrice(), orderItem.getTotalPrice(), orderItem.getOrderId());}
}