package com.rlovep.servlet; import java.io.IOException; import java.util.ArrayList; import java.util.Date; import java.util.LinkedHashMap; import java.util.List; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import com.rlovep.entity.DinnerTable; import com.rlovep.entity.Food; import com.rlovep.entity.OrderDetail; import com.rlovep.entity.Orders; import com.rlovep.service.IDinnerTableService; import com.rlovep.service.IFoodService; import com.rlovep.service.IOrderDetailService; import com.rlovep.service.IOrdersService; import com.rlovep.utils.BeanFactory; import com.rlovep.utils.PageBean; import java.util.Map; import java.util.Map.Entry; import java.util.Set; @WebServlet(name="OrdereServlet",value="/order",loadOnStartup=4) public class OrderServlet extends BaseServlet { /** * @Fields serialVersionUID : TODO */ private static final long serialVersionUID = 1L; @Override public void init(ServletConfig config) throws ServletException { super.init(config); List<Orders> list = ordersService.query(); List<OrderDetail> list2 = orderDetailService.query(); config.getServletContext().setAttribute("orders", list); config.getServletContext().setAttribute("orderDetail", list2); } public Object putInCar(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{ Object uri = null; HttpSession session = request.getSession(); Map<Food, Integer> map = new LinkedHashMap<Food, Integer>(); try { // 获取实物id String id = request.getParameter("food_id"); Food food = foodService.findById(Integer.parseInt(id)); // 从session获得订单数据 Map<Food, Integer> m = (Map<Food, Integer>) session.getAttribute("foods"); if (m != null) { if (m.containsKey(food)) { Integer integer = m.get(food); m.put(food, integer + 1); } else { m.put(food, 1); session.setAttribute("foods", m); } } else { map.put(food, 1); session.setAttribute("foods", map); } uri = "/app/detail/clientCart.jsp"; return uri; } catch (Exception e) { e.printStackTrace(); uri = "/error/error.jsp"; return uri; } } public Object removeOrder(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{ Object uri = null; HttpSession session = request.getSession(); try { // 获取实物id String id = request.getParameter("gid"); Food food = foodService.findById(Integer.parseInt(id)); //获取加入餐车时的食物数据 Map<Food, Integer> m = (Map<Food, Integer>) session.getAttribute("foods"); m.remove(food); session.setAttribute("foods", m); uri = "/app/detail/clientCart.jsp"; return uri; } catch (Exception e) { e.printStackTrace(); uri = "/error/error.jsp"; return uri; } } public Object alterSorder(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{ Object uri = null; HttpSession session = request.getSession(); try { // 获取实物id String id = request.getParameter("gid"); Food food = foodService.findById(Integer.parseInt(id)); //获得数量 String num = request.getParameter("snumber"); //获取加入餐车时的食物数据 Map<Food, Integer> m = (Map<Food, Integer>) session.getAttribute("foods"); m.put(food, Integer.parseInt(num)); session.setAttribute("foods", m); uri = "/app/detail/clientCart.jsp"; return uri; } catch (Exception e) { e.printStackTrace(); uri = "/error/error.jsp"; return uri; } } public Object takeOrder(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{ Object uri = null; HttpSession session = request.getSession(); try { //获取加入餐车时的食物数据 Map<Food, Integer> m = (Map<Food, Integer>) session.getAttribute("foods"); String table_id = (String) session.getAttribute("table_id"); //新建订单对象 Orders order=new Orders(); order.setTable_id(Integer.parseInt(table_id)); //创建订单详细对象 OrderDetail detail=new OrderDetail(); //使订单可以迭代: Set<Entry<Food,Integer>> entrySet = m.entrySet(); //定义总价 double sum=0; int orderId=ordersService.getCount()+1; for(Entry<Food,Integer> entry:entrySet){ Food food = entry.getKey(); Integer count = entry.getValue(); sum+=food.getPrice()*count; } //增加订单 order.setOrderDate(new Date()); order.setTotalPrice(sum); ordersService.add(order); //增加详细订单: for (Entry<Food, Integer> entry : entrySet) { Food food = entry.getKey(); Integer count = entry.getValue(); detail.setFood_id(food.getId()); detail.setOrderId(orderId); detail.setFoodCount(count); orderDetailService.add(detail); } //将最新的订单写入context: List<Orders> orders = ordersService.query(); List<OrderDetail> orderDetail = orderDetailService.query(); this.getServletContext().setAttribute("orders", orders); this.getServletContext().setAttribute("orderDetail", orderDetail); uri = "/app/detail/clientOrderList.jsp"; return uri; } catch (Exception e) { e.printStackTrace(); uri = "/error/error.jsp"; return uri; } } public Object getOrderDetail(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{ Object uri = null; String id = request.getParameter("orderId"); List<OrderDetail> list=null; try { if(id!=null&&!id.isEmpty()){ list=orderDetailService.findByOrderId(Integer.parseInt(id)); request.setAttribute("orderDetail", list); uri = request.getRequestDispatcher("/sys/order/orderDetail.jsp"); } return uri; } catch (Exception e) { e.printStackTrace(); uri = "/error/error.jsp"; return uri; } } public Object pay(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{ Object uri = null; try { String oid = request.getParameter("orderId"); Orders o = new Orders(); o.setOrderStatus(1); o.setId(Integer.parseInt(oid)); ordersService.update(o); String tid = request.getParameter("tableId"); if (tid != null) { tableService.quitTable(Integer.parseInt(tid)); } // 将最新的订单写入context: List<Orders> orders = ordersService.query(); List<OrderDetail> orderDetail = orderDetailService.query(); this.getServletContext().setAttribute("orders", orders); this.getServletContext().setAttribute("orderDetail", orderDetail); List<DinnerTable> tables = tableService.query();// 更新前台首页的桌子 this.getServletContext().setAttribute("table", tables); DinnerTable table = tableService.findById(Integer.parseInt(tid));// 用于后台点击结账时消除通知 @SuppressWarnings("unchecked") List<String> list = (List<String>) this.getServletContext().getAttribute("tn"); if (list != null) { list.remove(table.getTableName());//已结账 } this.getServletContext().setAttribute("tn", list);//已结账 // // 5. 跳转 uri = getOrderList(request, response); return uri; } catch (Exception e) { e.printStackTrace(); uri = "/error/error.jsp"; return uri; } } public Object call(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{ Object uri = null; try { HttpSession session = request.getSession(); String id = (String) session.getAttribute("table_id"); DinnerTable table = tableService.findById(Integer.parseInt(id)); String tableName = table.getTableName(); @SuppressWarnings("unchecked") List<String> tab = (List<String>) this.getServletContext() .getAttribute("tn"); if (tab == null) { tab = new ArrayList<String>(); } tab.add(tableName);//没有结账的桌子 this.getServletContext().setAttribute("tn", tab); //删除数据: session.removeAttribute("table_id"); session.removeAttribute("foods"); //session.removeAttribute(""); uri = "/app/index.jsp"; return uri; } catch (Exception e) { e.printStackTrace(); uri = "/error/error.jsp"; return uri; } } public Object getOrderList(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Object uri = null; // 1. 获取“当前页”参数; (第一次访问当前页为null) String currPage = request.getParameter("currentPage"); // 判断 if (currPage == null || "".equals(currPage.trim())) { currPage = "1"; // 第一次访问,设置当前页为1; } // 转换 int currentPage = Integer.parseInt(currPage); // 2. 创建PageBean对象,设置当前页参数; 传入service方法参数 PageBean<Orders> pageBean = new PageBean<Orders>(); pageBean.setCurrentPage(currentPage); pageBean.setPageCount(6); // 3. 调用service ordersService.getAll(pageBean); // 【pageBean已经被dao填充了数据】 // 4. 保存pageBean对象,到request域中 request.setAttribute("pageBean", pageBean); // 5. 跳转 uri = request.getRequestDispatcher("sys/order/orderList.jsp"); return uri; } }