DAO层
dao
OrderDao
package com.atguigu.dao;
import com.atguigu.pojo.Order;
import java.util.List;
public interface OrderDao {
public int saveOrder(Order order);
public List<Order> queryOrders();
public int changeOrderStatus(String orderId,int status);
public List<Order> queryByUserId(int userId);
}
OrderItemDao
package com.atguigu.dao;
import com.atguigu.pojo.OrderItem;
import java.util.List;
public interface OrderItemDao {
public int saveOrderItem(OrderItem orderItem);
public List<OrderItem> queryOrderItemByOrderId(String orderId);
}
impl
OrderDaoImpl
package com.atguigu.dao.impl;
import com.atguigu.dao.OrderDao;
import com.atguigu.pojo.Order;
import java.util.List;
public class OrderDaoImpl extends BaseDao implements OrderDao {
@Override
public 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());
}
@Override
public List<Order> queryOrders() {
String sql = "select order_id orderId,create_time createTime,price,status,user_id from t_order";
return queryForList(Order.class, sql);
}
@Override
public int changeOrderStatus(String orderId, int status) {
String sql="update t_order set status=? where order_id=?";
return update(sql,status,orderId);
}
@Override
public List<Order> queryByUserId(int userId) {
String sql = "select order_id orderId,create_time createTime,price,status,user_id userId from t_order where user_id=?";
return queryForList(Order.class,sql,userId);
}
}
OrderItemDaoImpl
package com.atguigu.service;
import com.atguigu.pojo.Cart;
import com.atguigu.pojo.Order;
import com.atguigu.pojo.OrderItem;
import java.util.List;
public interface OrderService {
public String createOrder(Cart cart,Integer userId);
public List<Order> showAllOrders();
public int sendOrder(String orderId);
public List<OrderItem> showOrderDetail(String orderId);
public List<Order> showMyOrders(int userId);
public int receiverOrder(String orderId);
}
test
OrderDaoTest
package com.atguigu.test;
import com.atguigu.dao.OrderDao;
import com.atguigu.dao.impl.OrderDaoImpl;
import com.atguigu.pojo.Order;
import org.junit.Test;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
public class OrderDaoTest {
@Test
public void saveOrder() {
OrderDao orderDao=new OrderDaoImpl();
orderDao.saveOrder(new Order("1234567890",new Date(),new BigDecimal(100),0,1));
}
@Test
public void queryOrders() {
OrderDao orderDao=new OrderDaoImpl();
List<Order> orders = orderDao.queryOrders();
System.out.println(orders);
}
@Test
public void changeOrderStatus() {
OrderDao orderDao=new OrderDaoImpl();
orderDao.changeOrderStatus("1",1);
}
@Test
public void queryByUserId() {
OrderDao orderDao=new OrderDaoImpl();
List<Order> orders = orderDao.queryByUserId(1);
System.out.println(orders);
}
}
OrderItemDaoTest
package com.atguigu.test;
import com.atguigu.pojo.Cart;
import com.atguigu.pojo.CartItem;
import com.atguigu.pojo.Order;
import com.atguigu.pojo.OrderItem;
import com.atguigu.service.OrderService;
import com.atguigu.service.impl.OrderServiceImpl;
import org.junit.Test;
import java.math.BigDecimal;
import java.util.List;
public class OrderServiceTest {
private OrderService orderService=new OrderServiceImpl();
@Test
public void createOrder() {
Cart cart=new Cart();
cart.addItem(new CartItem(1,"java",1,new BigDecimal(1000),new BigDecimal(1000)));
cart.addItem(new CartItem(1,"java",1,new BigDecimal(1000),new BigDecimal(1000)));
cart.addItem(new CartItem(2,"数据结构与算法",1,new BigDecimal(100),new BigDecimal(100)));
OrderService orderService=new OrderServiceImpl();
System.out.println("订单号是:"+orderService.createOrder(cart, 1));
}
@Test
public void showAllOrders() {
List<Order> orders = orderService.showAllOrders();
System.out.println(orders);
}
@Test
public void sendOrder() {
int i = orderService.sendOrder("1");
System.out.println(i);
}
@Test
public void showOrderDetail() {
List<OrderItem> orderItems = orderService.showOrderDetail("1");
System.out.println(orderItems);
}
@Test
public void showMyOrders() {
List<Order> orders = orderService.showMyOrders(1);
System.out.println(orders);
}
@Test
public void receiverOrder() {
int i = orderService.receiverOrder("1");
System.out.println(i);
}
}
Service层
service
OrderService
package com.atguigu.service;
import com.atguigu.pojo.Cart;
import com.atguigu.pojo.Order;
import com.atguigu.pojo.OrderItem;
import java.util.List;
public interface OrderService {
public String createOrder(Cart cart,Integer userId);
public List<Order> showAllOrders();
public int sendOrder(String orderId);
public List<OrderItem> showOrderDetail(String orderId);
public List<Order> showMyOrders(int userId);
public int receiverOrder(String orderId);
}
impl
OrderServiceImpl
package com.atguigu.service.impl;
import com.atguigu.dao.BookDao;
import com.atguigu.dao.OrderDao;
import com.atguigu.dao.OrderItemDao;
import com.atguigu.dao.impl.BookDaoImpl;
import com.atguigu.dao.impl.OrderDaoImpl;
import com.atguigu.dao.impl.OrderItemDaoImpl;
import com.atguigu.pojo.*;
import com.atguigu.service.OrderService;
import java.util.Date;
import java.util.List;
import java.util.Map;
public class OrderServiceImpl implements OrderService {
private OrderDao orderDao =new OrderDaoImpl();
private OrderItemDao orderItemDao=new OrderItemDaoImpl();
private BookDao bookDao=new BookDaoImpl();
@Override
public String createOrder(Cart cart, Integer userId) {
String orderId=System.currentTimeMillis()+""+userId;
Order order=new Order(orderId,new Date(),cart.getTotalPrice(),0,userId);
orderDao.saveOrder(order);
for (Map.Entry<Integer, CartItem>entry:cart.getItems().entrySet()) {
CartItem cartItem=entry.getValue();
OrderItem orderItem=new OrderItem(null,cartItem.getName(),cartItem.getCount(),cartItem.getPrice(),cartItem.getTotalPrice(),orderId);
orderItemDao.saveOrderItem(orderItem);
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;
}
@Override
public List<Order> showAllOrders() {
return orderDao.queryOrders();
}
@Override
public int sendOrder(String orderId) {
return orderDao.changeOrderStatus(orderId,1);
}
@Override
public List<OrderItem> showOrderDetail(String orderId) {
return orderItemDao.queryOrderItemByOrderId(orderId);
}
@Override
public List<Order> showMyOrders(int userId) {
return orderDao.queryByUserId(userId);
}
@Override
public int receiverOrder(String orderId) {
return orderDao.changeOrderStatus(orderId,2);
}
}
test
OrderServiceTest
package com.atguigu.test;
import com.atguigu.pojo.Cart;
import com.atguigu.pojo.CartItem;
import com.atguigu.pojo.Order;
import com.atguigu.pojo.OrderItem;
import com.atguigu.service.OrderService;
import com.atguigu.service.impl.OrderServiceImpl;
import org.junit.Test;
import java.math.BigDecimal;
import java.util.List;
public class OrderServiceTest {
private OrderService orderService=new OrderServiceImpl();
@Test
public void createOrder() {
Cart cart=new Cart();
cart.addItem(new CartItem(1,"java",1,new BigDecimal(1000),new BigDecimal(1000)));
cart.addItem(new CartItem(1,"java",1,new BigDecimal(1000),new BigDecimal(1000)));
cart.addItem(new CartItem(2,"数据结构与算法",1,new BigDecimal(100),new BigDecimal(100)));
OrderService orderService=new OrderServiceImpl();
System.out.println("订单号是:"+orderService.createOrder(cart, 1));
}
@Test
public void showAllOrders() {
List<Order> orders = orderService.showAllOrders();
System.out.println(orders);
}
@Test
public void sendOrder() {
int i = orderService.sendOrder("1");
System.out.println(i);
}
@Test
public void showOrderDetail() {
List<OrderItem> orderItems = orderService.showOrderDetail("1");
System.out.println(orderItems);
}
@Test
public void showMyOrders() {
List<Order> orders = orderService.showMyOrders(1);
System.out.println(orders);
}
@Test
public void receiverOrder() {
int i = orderService.receiverOrder("1");
System.out.println(i);
}
}
Web层
OrderServlet
package com.atguigu.web;
import com.atguigu.pojo.Cart;
import com.atguigu.pojo.Order;
import com.atguigu.pojo.OrderItem;
import com.atguigu.pojo.User;
import com.atguigu.service.OrderService;
import com.atguigu.service.impl.OrderServiceImpl;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
public class OrderServlet extends BaseServlet {
private OrderService orderService = new OrderServiceImpl();
public void createOrder(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Cart cart = (Cart) req.getSession().getAttribute("cart");
User loginUser = (User) req.getSession().getAttribute("user");
if (loginUser == null) {
req.getRequestDispatcher("/pages/user/login.jsp").forward(req, resp);
return;
}
Integer userId = loginUser.getId();
String orderId = orderService.createOrder(cart, userId);
req.getSession().setAttribute("orderId", orderId);
resp.sendRedirect(req.getContextPath() + "/pages/cart/checkout.jsp");
}
public void showAllOrders(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
List<Order> showAllOrders = orderService.showAllOrders();
req.getSession().setAttribute("showAllOrders", showAllOrders);
resp.sendRedirect(req.getContextPath() + "/pages/manager/order_manager.jsp");
}
public void sendOrder(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String orderId= req.getParameter("thisOrderId");
orderService.sendOrder(orderId);
resp.sendRedirect(req.getContextPath() + "/orderServlet?action=showAllOrder");
}
public void showOrderDetail(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String orderId= req.getParameter("thisOrderId");
List<OrderItem> orderItems = orderService.showOrderDetail(orderId);
req.getSession().setAttribute("orderItems", orderItems);
resp.sendRedirect(req.getContextPath() +"/pages/orderDetail/orderDetail.jsp");
}
public void showMyOrder(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
User loginUser = (User) req.getSession().getAttribute("user");
if (loginUser == null) {
req.getRequestDispatcher("/pages/user/login.jsp").forward(req, resp);
return;
}
Integer userId = loginUser.getId();
List<Order> showMyOrders = orderService.showMyOrders(userId);
req.getSession().setAttribute("showMyOrders", showMyOrders);
resp.sendRedirect(req.getContextPath() + "/pages/order/order.jsp");
}
public void receiverOrder(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String orderId= req.getParameter("thisOrderId");
orderService.receiverOrder(orderId);
resp.sendRedirect(req.getContextPath() + "/orderServlet?action=showMyOrder");
}
}
重新配置web.xml
<servlet>
<servlet-name>OrderServlet</servlet-name>
<servlet-class>com.atguigu.web.OrderServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>OrderServlet</servlet-name>
<url-pattern>/orderServlet</url-pattern>
<url-pattern>/pages/manager/orderServlet</url-pattern>
</servlet-mapping>
页面
新增 pages/ordeDetailr/orderDetail.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--
Created by IntelliJ IDEA.
User: lenovo
Date: 2021/9/23
Time: 17:15
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>订单详情</title>
<%--静态包含 base标签,css样式,jquery文件 --%>
<%@ include file="/pages/common/head.jsp"%>
</head>
<body>
<%@ include file="/pages/common/login_sucess_menu.jsp"%>
<div id="main">
<table>
<tr>
<td>商品名称</td>
<td>数量</td>
<td>单价</td>
<td>总价</td>
<td>订单号</td>
</tr>
<%-- ${sessionScope.orderItems}--%>
<c:if test="${not empty sessionScope.orderItems}">
<%-- 如果订单非空的情况 --%>
<c:forEach items="${sessionScope.orderItems}" var="order">
<tr>
<td>${order.name}</td>
<td>${order.count}</td>
<td>${order.price}</td>
<td>${order.totalPrice}</td>
<td>${order.orderId}</td>
</tr>
</c:forEach>
</c:if>
</table>
</div>
<%--静态包含页脚内容--%>
<%@include file="/pages/common/footer.jsp"%>
</body>
</html>
修改 order.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--
Created by IntelliJ IDEA.
User: lenovo
Date: 2021/8/21
Time: 下午 02:45
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>我的订单</title>
<%--静态包含 base标签,css样式,jquery文件 --%>
<%@ include file="/pages/common/head.jsp"%>
<style type="text/css">
h1 {
text-align: center;
margin-top: 200px;
}
</style>
</head>
<body>
<div id="header">
<img class="logo_img" alt="" src="../../static/img/logo.gif">
<span class="wel_word">我的订单</span>
<%-- 静态包含登录成功之后的菜单--%>
<%@ include file="/pages/common/login_sucess_menu.jsp"%>
</div>
<div id="main">
<table>
<tr>
<td>日期</td>
<td>金额</td>
<td>状态</td>
<td>详情</td>
</tr>
<%-- ${sessionScope.showMyOrders}--%>
<c:if test="${empty sessionScope.showMyOrders}">
<%-- 如果订单为空的情况 --%>
<td colspan="4"><a href="index.jsp"> 亲,当前订单为空!去首页看看吧!!!</a></td>
</c:if>
<c:if test="${not empty sessionScope.showMyOrders}">
<%-- 如果订单非空的情况 --%>
<c:forEach items="${sessionScope.showMyOrders}" var="showMyOrder">
<tr>
<td>${showMyOrder.createTime}</td>
<td>${showMyOrder.price}</td>
<c:if test="${showMyOrder.status==0}">
<td>
未发货
</td>
</c:if>
<c:if test="${showMyOrder.status==1}">
<td>
已发货
<a href="orderServlet?action=receiverOrder&thisOrderId=${showMyOrder.orderId}">收货</td>
</td>
</c:if>
<c:if test="${showMyOrder.status==2}">
<td>已签收</td>
</c:if>
<td><a href="orderServlet?action=showOrderDetail&thisOrderId=${showMyOrder.orderId}">查看详情</a> </td>
</tr>
</c:forEach>
</c:if>
</table>
</div>
<%--静态包含页脚内容--%>
<%@include file="/pages/common/footer.jsp"%>
</body>
</html>
修改 order_manager.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--
Created by IntelliJ IDEA.
User: lenovo
Date: 2021/8/21
Time: 下午 02:47
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html>
<head>
<title>订单管理</title>
<%--静态包含 base标签,css样式,jquery文件 --%>
<%@ include file="/pages/common/head.jsp"%>
</head>
<body>
<div id="header">
<img class="logo_img" alt="" src="../../static/img/logo.gif">
<span class="wel_word">订单管理系统</span>
<%-- 静态包含manager 管理模块的菜单 --%>
<%@ include file="/pages/common/manager_menu.jsp"%>
</div>
<div id="main">
<table>
<tr>
<td>日期</td>
<td>金额</td>
<td>详情</td>
<td>状态</td>
</tr>
<%-- ${sessionScope.showAllOrders}--%>
<c:if test="${empty sessionScope.showAllOrders}">
<%-- 如果订单为空的情况 --%>
<td colspan="4"> 亲,当前订单为空!</td>
</c:if>
<c:if test="${not empty sessionScope.showAllOrders}">
<c:forEach items="${sessionScope.showAllOrders}" var="order">
<tr>
<td>${order.createTime}</td>
<td>${order.price}</td>
<td><a href="orderServlet?action=showOrderDetail&thisOrderId=${order.orderId}">查看详情</a></td>
<c:if test="${order.status==0}">
<td>未发货 <a href="orderServlet?action=sendOrder&thisOrderId=${order.orderId}">发货</a> </td>
</c:if>
<c:if test="${order.status==1}">
<td>已发货</td>
</c:if>
<c:if test="${order.status==2}">
<td>已签收</td>
</c:if>
</tr>
</c:forEach>
</c:if>
</table>
</div>
<%--静态包含页脚内容--%>
<%@include file="/pages/common/footer.jsp"%>
</body>
</html>
修改 manager_menu.jsp
<%--
Created by IntelliJ IDEA.
User: lenovo
Date: 2021/8/21
Time: 下午 05:38
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<div>
<a href="manager/bookServlet?action=page">图书管理</a>
<a href="orderServlet?action=showAllOrders">订单管理</a>
<a href="index.jsp">返回商城</a>
</div>