网上图书商城项目学习笔记-021取消订单\确认收货
一、流程分析
二、代码
1.view层
(1)desc.jsp
1 <c:if test="${order.status eq 1 }"> 2 <a href="<c:url value='/OrderServlet?method=prePay&oid=${order.oid }'/>" class="pay"></a><br/> 3 </c:if> 4 <c:if test="${order.status eq 1 and btn eq 'cancel' }"> 5 <a id="cancel" href="<c:url value='/OrderServlet?method=cancel&oid=${order.oid }'/>">取消订单</a><br/> 6 </c:if> 7 <c:if test="${order.status eq 3 and btn eq 'confirm' }"> 8 <a id="confirm" href="<c:url value='/OrderServlet?method=confirm&oid=${order.oid }'/>">确认收货</a><br/> 9 </c:if>
2.servlet层
(1)OrderServlet.java
1 /** 2 * 确认订单 3 * @param req 4 * @param resp 5 * @return 6 * @throws ServletException 7 * @throws IOException 8 */ 9 public String confirm(HttpServletRequest req, HttpServletResponse resp) 10 throws ServletException, IOException { 11 String id = req.getParameter("oid"); 12 int status = service.findStatus(id); 13 14 if(status != 3) { 15 req.setAttribute("code", "error"); 16 req.setAttribute("msg", "态不对,不能确认收货!"); 17 return "f:/jsps/msg.jsp"; 18 } 19 service.updateStatus(id, 4); 20 req.setAttribute("code", "success"); 21 req.setAttribute("msg", "恭喜,交易成功!"); 22 return "f:/jsps/msg.jsp"; 23 } 24 25 /** 26 * 取消收货 27 * @param req 28 * @param resp 29 * @return 30 * @throws ServletException 31 * @throws IOException 32 */ 33 public String cancel(HttpServletRequest req, HttpServletResponse resp) 34 throws ServletException, IOException { 35 String id = req.getParameter("oid"); 36 int status = service.findStatus(id); 37 38 if(status != 1) { 39 req.setAttribute("code", "error"); 40 req.setAttribute("msg", "状态不对,不能取消!"); 41 return "f:/jsps/msg.jsp"; 42 } 43 service.updateStatus(id, 5); 44 req.setAttribute("code", "success"); 45 req.setAttribute("msg", "您的订单已取消!"); 46 return "f:/jsps/msg.jsp"; 47 }
3.service层
(1)OrderService.java
1 /** 2 * 修改订单状态 3 * @param id 4 * @param status 5 */ 6 public void updateStatus(String id, int status) { 7 try { 8 dao.updateStatus(id, status); 9 } catch (SQLException e) { 10 throw new RuntimeException(e); 11 } 12 } 13 14 /** 15 * 查找订单状态 16 * @param id 17 * @return 18 */ 19 public int findStatus(String id) { 20 try { 21 return dao.findStatus(id); 22 } catch (SQLException e) { 23 throw new RuntimeException(e); 24 } 25 }
4.dao层
(1)OrderDao.java
1 /** 2 * 修改订单状态 3 * @param id 4 * @param status 5 * @throws SQLException 6 */ 7 public void updateStatus(String id, int status) throws SQLException { 8 String sql = "update t_order set status=? where oid=?"; 9 qr.update(sql, status, id); 10 } 11 12 /** 13 * 查找订单状态 14 * @param id 15 * @return 16 * @throws SQLException 17 */ 18 public int findStatus(String id) throws SQLException { 19 String sql = "select status from t_order where oid=?"; 20 Number status = (Number) qr.query(sql, new ScalarHandler(), id); 21 return status.intValue(); 22 }
You can do anything you set your mind to, man!