项目阶段六:后台管理的订单模块

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>
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值