1、环境准备
1.1、编写后台管理查看所有订单模块的 Dao 程序和测试
OrderDao 接口 :
/**
* 查询全部订单
* @return
*/
List<Order> queryOrders();
OrderDao 实现 :
@Override
public List<Order> queryOrders() {
String sql = "select order_id orderId,create_time createTime,price,count,status,user_id userId from t_order";
return queryForList(Order.class,sql);
}
OrderDaoTest:
@Test
public void queryOrders() {
List<Order> orders = orderDao.queryOrders();
for (Order order : orders) {
System.out.println(order);
}
}
1.2、编写后台管理查看所有订单模块的 Service 和测试
OrderService 接口:
/**
* 管理人员查看所订单
* @return
*/
List<Order> showAllOrders();
OrderService 实现类 :
@Override
public List<Order> showAllOrders() {
List<Order> orders = orderDao.queryOrders();
return orders;
}
测试 :
@Test
public void showAllOrders() {
List<Order> orders = orderService.showAllOrders();
for (Order order : orders) {
System.out.println(order);
}
}
1.3、编写后台管理查看所有订单的Servlet程序和jsp页面
OrderServlet:
public class OrderServlet extends BaseServlet {
private OrderService orderService = new OrderServiceImpl();
/**
* 查询所订单
* @param req
* @param resp
* @throws ServletException
* @throws IOException
*/
protected void showAllOrders(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
List<Order> orders = orderService.showAllOrders();
req.getSession().setAttribute("allOrders",orders);
req.getRequestDispatcher("/pages/manager/order_manager.jsp").forward(req,resp);
}
}
web配置:
<!-- 管理人员订单模块的配置-->
<servlet>
<servlet-name>OrderServlet</servlet-name>
<servlet-class>loey.web.OrderServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>OrderServlet</servlet-name>
<url-pattern>/manager/orderServlet</url-pattern>
</servlet-mapping>
manager_menu.jsp:
<a href="manager/bookServlet?action=page">图书管理</a>
<a href="manager/orderServlet?action=showAllOrders">订单管理</a>
<a href="index.jsp">返回商城</a>
order_manager.jsp:
<div id="main">
<c:if test="${empty sessionScope.allOrders}">
<div style="margin-left:40%;margin-top:15%;font-size: 20px;color: red">
还没任何订单!!!
</div>
</c:if>
<c:if test="${not empty sessionScope.allOrders}">
<table>
<tr>
<td>日期</td>
<td>金额</td>
<td>详情</td>
<td>发货</td>
</tr>
<c:forEach items="${sessionScope.allOrders}" var="order">
<tr>
<td>${order.createTime}</td>
<td>${order.price}</td>
<td><a href="#">查看详情</a></td>
<td><a href="#">点击发货</a></td>
</tr>
</c:forEach>
</table>
</c:if>
</div>
2、管理人员查看订单详情
order_manager.jsp
<td>${order.createTime}</td>
<td>${order.price}</td>
<td><a href="client/orderServlet?action=showOrderDetail&orderId=${order.orderId}&allCount=${order.count}&allPrice=${order.price}">查看详情</a></td>
<td><a href="#">点击发货</a></td>
2.1、编写管理员发货模块的 Dao 程序和测试
OrderDao 接口 :
/**
* 修改订单状态
* @param orderId
* @param status
*/
int changeOrderStatus(String orderId,Integer status);
OrderDao 实现 :
@Override
public int changeOrderStatus(String orderId, Integer status) {
String sql = "update t_order set status = ? where order_id = ?";
return upDate(sql,status,orderId);
}
OrderDaoTest:
@Test
public void changeOrderStatus() {
orderDao.changeOrderStatus("16023313375491", 1);
}
2.2、编写管理员发货模块的 Service 和测试
OrderService 接口:
/**
* 管理员发货
* @param orderId 订单编号
*/
void sendOrder(String orderId);
OrderService 实现类 :
@Override
public void sendOrder(String orderId) {
orderDao.changeOrderStatus(orderId,1);
}
测试 :
@Test
public void sendOrder() {
orderService.sendOrder("16023327421711");
}
2.3编写管理员发货的Servlet程序和jsp页面
OrderServlet:
protected void sendOrder(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String orderId = req.getParameter("orderId");
//发货
orderService.sendOrder(orderId);
// 重定向回原来商品所在的地址页面
resp.sendRedirect(req.getHeader("Referer"));
}
order_manager.jsp:
<script type="text/javascript">
$(function () {
// 对点击发货绑定单击事件
$("#sendOrder").click(function () {
// 对点击发货进行确认
return confirm("你确认对" + $(this).parent().parent().find("td:first").text() + "创建的订单进行发货吗?")
});
});
</script>
<td>
<c:if test="${order.status == 0}">
<a id="sendOrder" href="manager/orderServlet?action=sendOrder&orderId=${order.orderId}">点击发货</a>
</c:if>
<c:if test="${order.status == 1}">
已发货
</c:if>
<c:if test="${order.status == 2}">
已签收
</c:if>
</td>
3、编写用户我的订单
3.1、编写用户我的订单签收订单模块的 Service 和测试
OrderService 接口:
/**
* 签收订单、确认收货
* @param orderId
*/
void receiverOrder(String orderId);
OrderService 实现类 :
@Override
public void receiverOrder(String orderId) {
orderDao.changeOrderStatus(orderId,2);
}
3.2编写用户我的订单签收订单Servlet程序和jsp页面
ClientOrderServlet:
protected void receiverOrder(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String orderId = req.getParameter("orderId");
orderService.receiverOrder(orderId);
// 重定向回原来商品所在的地址页面
resp.sendRedirect(req.getHeader("Referer"));
}
order.jsp:
<script type="text/javascript">
$(function () {
$("#receiverOrder").click(function () {
return confirm("你确定对" + $(this).parent().parent().find("td:first").text() + "的订单进行确认收货操作吗?")
});
});
</script>
<c:if test="${order.status == 2}">
<td>已确认</td>
</c:if>
<c:if test="${order.status != 2}">
<td><a id="receiverOrder" href="client/orderServlet?action=receiverOrder&orderId=${order.orderId}">确认</a></td>
</c:if>