45、订单查询

学习过程:

确认订单后就可以前台可以查看订单,后台也可以处理订单了,我们先完成前台的订单查询

一、前台订单查询

1、前台订单查询的dao实现,为OrderDao添加方法,新点击的订单默认是没有处理的状态。

	/**
	 * 
	 * @param memeberId 用户Id
	 * @param page
	 * @return
	 */
	public List<Order> getOrdersByMemberId(int memeberId, Page page) {

		OrderDetailDao orderDetailDao=new OrderDetailDao();
		
		List<Order> orders = new ArrayList<Order>();
		try {
			getCon();
			String sqlcount = "select count(*) from orders where member_id=?";
			rs = exeQuery(sqlcount, new Object[] { memeberId });
			if (rs.next()) {
				page.setItmeCount(rs.getInt(1));
			}

			String sql = "select * from orders where member_id=? limit ?,?";
			rs = exeQuery(sql, new Object[] { memeberId, page.getItemStart(),
					page.getPageSize() });

			while (rs.next()) {
                 Order order=new Order();
                 
                 order.setAddr(rs.getString("addr"));
                 order.setCountcash(rs.getDouble("countcash"));
                 order.setMemberId(rs.getInt("member_id"));
                 order.setOrderId(rs.getInt("order_id"));
                 order.setOrderTime(rs.getTimestamp("order_time"));
                 order.setPhone(rs.getString("phone"));
                 order.setRealName(rs.getString("real_name"));
                 order.setStatus(rs.getInt("status"));
                 
                 //把订单详情查询出来
                 List<OrderDetail> orderDetails=orderDetailDao.getDetailByOrderId(order.getOrderId());
                 order.setOrderDetails(orderDetails);  
                 
                 orders.add(order);
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		return orders;
	}
	
	/**
	 * 后台根据订单状态查询
	 * 
	 * @param status
	 *            订单状态
	 * @param page
	 *            分页信息
	 * @return
	 */
	public List<Order> getOrderByStatus(int status, Page page) {
		OrderDetailDao orderDetailDao = new OrderDetailDao();

		List<Order> orders = new ArrayList<Order>();
		try {
			getCon();
			String sqlcount = "select count(*) from orders where status=?";
			rs = exeQuery(sqlcount, new Object[] { status });
			if (rs.next()) {
				page.setItmeCount(rs.getInt(1));
			}

			String sql = "select * from orders where status=? order by status limit ?,? ";
			rs = exeQuery(
					sql,
					new Object[] { status, page.getItemStart(),
							page.getPageSize() });

			while (rs.next()) {
				Order order = new Order();

				order.setAddr(rs.getString("addr"));
				order.setCountcash(rs.getDouble("countcash"));
				order.setMemberId(rs.getInt("member_id"));
				order.setOrderId(rs.getInt("order_id"));
				order.setOrderTime(rs.getTimestamp("order_time"));
				order.setPhone(rs.getString("phone"));
				order.setRealName(rs.getString("real_name"));
				order.setStatus(rs.getInt("status"));

				// 把订单详情查询出来
				List<OrderDetail> orderDetails = orderDetailDao
						.getDetailByOrderId(order.getOrderId());
				order.setOrderDetails(orderDetails);

				orders.add(order);
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			closeAll();
		}

		return orders;
	}

	/**
	 * 根据订单Id查询,已经把该订单的详情页查询出来了。
	 * 
	 * @param id
	 * @return
	 */
	public Order getOrderById(int id) {
		OrderDetailDao orderDetailDao = new OrderDetailDao();
		Order order = null;
		try {
			getCon();
			String sql = "select * from orders where order_id=? ";
			rs = exeQuery(sql, new Object[] { id });

			if (rs.next()) {
				order = new Order();

				order.setAddr(rs.getString("addr"));
				order.setCountcash(rs.getDouble("countcash"));
				order.setMemberId(rs.getInt("member_id"));
				order.setOrderId(rs.getInt("order_id"));
				order.setOrderTime(rs.getTimestamp("order_time"));
				order.setPhone(rs.getString("phone"));
				order.setRealName(rs.getString("real_name"));
				order.setStatus(rs.getInt("status"));

				// 把订单详情查询出来
				List<OrderDetail> orderDetails = orderDetailDao
						.getDetailByOrderId(order.getOrderId());
				order.setOrderDetails(orderDetails);

			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			closeAll();
		}

		return order;
	}

	public int updateOrderStatus(int orderId, int status) {
		int result = 0;
		getCon();
		String sql="update orders set status=? where order_id=?";
		result=exeUpdate(sql, new Object[]{status,orderId});
		closeAll();
		return result;
	}

2、修改订单处理的servlet代码。

else if (ope.equals("list")) {
			Member member = (Member) session.getAttribute("member");
			
			List<GoodsTypes> goodsTypeses=goodsTypesDao.getAllTypes();
	
			
		    int currentPage=1;
		    String cpage=request.getParameter("cpage");
		    if(cpage!=null){
		    	currentPage=Integer.parseInt(cpage);
		    }
			
            Page page=new Page();
            page.setCurrentPage(currentPage);
            page.setPageSize(10);
            		
			List<Order> orders=orderDao.getOrdersByMemberId(member.getMemberId(), page);
			
			request.setAttribute("page", page);
			request.setAttribute("orders", orders);
			request.setAttribute("goodsTypeses", goodsTypeses);
			// 查询用户的所有的订单信息
			request.getRequestDispatcher("orderlist.jsp").forward(request,
					response);

		}

3、修改页面

		<!-- content -->
		<div id="manage_content_wrapper">
			<div id="manage_content_left">
				<jsp:include page="left.jsp"></jsp:include>
			</div>
			<div id="manage_content_right">

				<div id="admin_content_contain">
					<form action="OrderAdminServlet">

						<select name="status">
							<option value="1" <c:if test="${status==1 }">selected="selected"</c:if>>没有处理</option>
							<option value="2" <c:if test="${status==2 }">selected="selected"</c:if>>已查看</option>
							<option value="3" <c:if test="${status==3 }">selected="selected"</c:if>>已发送</option>
							<option value="4" <c:if test="${status==4 }">selected="selected"</c:if>>交易成功</option>
							<option value="5" <c:if test="${status==5 }">selected="selected"</c:if>>交易失败</option>

						</select> <input type="submit" value="查找" />
					</form>
					<table width="859" border="0" cellspacing="1" bgcolor="#e8822e">
						<tr class="admin_font3">
							<td width="57" height="30">序号</td>
							<td width="98">客户姓名</td>
							<td width="90">下单时间</td>
							<td width="171">送货地址</td>
							<td width="161">联系方式</td>
							<td width="96">总金额</td>
							<td width="65">状态</td>
							<td width="69">操作</td>
						</tr>
						<c:forEach items="${orders }" var="order" varStatus="status">
							<tr class="admin_font2">

								<td height="25">${status.index+1 }</td>
								<td>${order.realName }</td>
								<td>${order.orderTime }</td>
								<td>${order.addr }</td>
								<td>${order.phone }</td>
								<td>${order.countcash}</td>
								<td><c:choose>

										<c:when test="${ order.status eq 1}">没有处理</c:when>
										<c:when test="${ order.status eq 2}">已查看</c:when>
										<c:when test="${ order.status eq 3}">已发送</c:when>
										<c:when test="${ order.status eq 4}">交易成功</c:when>
										<c:otherwise>交易失败</c:otherwise>

									</c:choose>
								</td>
								<td><a
									href="OrderAdminServlet?ope=detaillist&oid=${order.orderId }">
										查看详情</a>
								</td>
							</tr>
						</c:forEach>
					</table>
				</div>

			</div>


			<div align="center">
				第${page.currentPage }页,共有 ${page.pageCount } 页 <a
					href="OrderAdminServlet?status=${status }&cpage=${page.currentPage-1}">上一页</a>
				<a
					href="OrderAdminServlet?status=${status }&cpage=${page.currentPage+1}">下一页</a>
			</div>

		</div>

		<!-- end of content -->

js代码实现:

二、后台订单处理

后台需要完成订单查询,并能够根据订单状态查询,然后处理订单

点击查看详情后就可以处理订单了。

下面是代码的实现:

扫描二维码关注公众号,回复: 4350849 查看本文章

1、OrderDetailDao类,点击一个方法

public class OrderDetailDao extends BaseDao{
	
	
	/**
	 * 根据订单Id获得订单详情
	 * @param orderId
	 * @return
	 */
	public List<OrderDetail> getDetailByOrderId(int orderId){
		GoodsDao goodsDao=new GoodsDao();
		
		List<OrderDetail> orderDetails=new ArrayList<OrderDetail>();
		getCon();
		String sql="select * from order_detail where order_id=?";
		rs=exeQuery(sql, new Object[]{orderId});
		
		try {
			while(rs.next()){
				OrderDetail orderDetail=new OrderDetail();
				orderDetail.setCash(rs.getDouble("cash"));
				orderDetail.setDetailId(rs.getInt("detail_Id"));
				orderDetail.setGoodsId(rs.getInt("goods_id"));
				orderDetail.setNums(rs.getInt("nums"));
				
				//查询对应的商品信息
				Goods goods=goodsDao.getById(orderDetail.getGoodsId());
				orderDetail.setGoods(goods);
				
				orderDetails.add(orderDetail);
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			closeAll();
		}
		
		return orderDetails;
		
	}
	
	public static void main(String[] args) {
		OrderDetailDao orderDetailDao=new OrderDetailDao();
		
		List<OrderDetail>  orderDetails=orderDetailDao.getDetailByOrderId(5);
		System.out.println(orderDetails.size());
		
	}

}

2、servlet实现

public class OrderAdminServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		OrderDao orderDao = new OrderDao();
		OrderDetailDao orderDetailDao = new OrderDetailDao();
		MemberDao memberDao=new MemberDao();
		
		String ope = request.getParameter("ope");
		if (ope == null || ope.equals("orderlist")) {

			int currentPage = 1;// 当前页
			int status = Order.NOT;// 订单状态

			// 获得用户指定的当前页和订单状态
			String cpage = request.getParameter("cpage");
			String sta = request.getParameter("status");
			if (cpage != null) {
				currentPage = Integer.parseInt(cpage);
			}
			if (sta != null) {
				status = Integer.parseInt(sta);
			}

			// 分页信息
			Page page = new Page();
			page.setCurrentPage(currentPage);

			// 查询数据库
			List<Order> orders = orderDao.getOrderByStatus(status, page);

			request.setAttribute("status", status);
			request.setAttribute("orders", orders);
			request.setAttribute("page", page);

			request.getRequestDispatcher("orderlist.jsp").forward(request,
					response);

		} else if (ope.equals("detaillist")) {

			int orderId = Integer.parseInt(request.getParameter("oid"));

			Order order = orderDao.getOrderById(orderId);
			request.setAttribute("order", order);

			request.getRequestDispatcher("orderdeal.jsp").forward(request,
					response);

		} else if (ope.equals("deal")) {
			
			int orderId = Integer.parseInt(request.getParameter("orderId"));
			int status = Integer.parseInt(request.getParameter("status"));
			
			int result=orderDao.updateOrderStatus(orderId, status);
			
			if(status==Order.SENDED){
				//获得用户的邮箱,
				//发送邮件
			}
			
			
			if (result>0) {
			   //修改成功	
				response.sendRedirect("OrderAdminServlet");
			}else{
				response.sendRedirect("error.jsp");
			}
			
		}

	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		doGet(request, response);
	}

}

猜你喜欢

转载自blog.csdn.net/liubao616311/article/details/84072226
45