订单模块实现

orderDao接口编写

    /**
* 保存订单项到数据库
* @param order 订单项对象
* @return 返回-1则操作失败
*/
public int saveOder(order order);

/**
* 根据订单号查询订单
* @param Id 订单id
* @return 返回一个list集合里面存储这个用户的订单
*
**/
public List<order> queryMyOrderById(Integer Id);
/**
* @return 返回一个list集合里面存储所有订单项
* 查询所有
*
* */
public List<order> queryAllOrder();

/**
*修改订单状态
* @param statusNum 修改的状态 0为未发货1为发货2为签收
* @param orderId 订单的id
* @return 返回-1则操作失败
* */
public int changeOrderStatus(Integer statusNum,String orderId);

orderDao实现类的编写

    /**
    *
    * 保存一个订单到数据库指定的数据表中
    * */
    @Override
    public int saveOder(order order) {
        String sql="insert into t_order(`order_id`,`create_time`,`price`,`status`,`user_id`) values(?,?,?,?,?)";

        return update(sql,order.getOrderId(),order.getCreateTime(),order.getPrice(),order.getStatus(),order.getUserId());
    }
/**
* 查找该用户的所有订单
*
* */
    @Override
    public List<order> queryMyOrderById(Integer Id) {
        String sql="select order_id as orderId,create_time as createTime,price,status,user_id as userId from t_order where user_id=?";

        return queryForList(order.class,sql,Id);
    }
/**
* 查找所有订单
*
* */
    @Override
    public List<order> queryAllOrder() {
        String sql = "select order_id as orderId,create_time as createTime,price,status,user_id as userId from t_order";

        return queryForList(order.class, sql);
    }


    /**
    * 修改订单信息
    *
    * */
    @Override
    public int changeOrderStatus(Integer statusNum, String orderId) {
        String sql="update t_order set `status`=? where order_id=?";
        return update(sql, statusNum, orderId);
    }

编写orderItemDao

   /**
    * 保存订单项的详细信息
    * */
    public  int saveOrderItem(OrderItem orderItem);
    /**
     * 查询订单号的详细信息
     * */
    public List<OrderItem> Details(String orderId);

编写实现类

 @Override
    public int saveOrderItem(OrderItem orderItem) {
        String sql = "insert into t_order_item(`name`,`count`,`price`,`total_price`,`order_id`) values(?,?,?,?,?)";
        return update(sql, orderItem.getName(), orderItem.getCount(), orderItem.getPrice(), orderItem.getTotalPrice(), orderItem.getOrderId());
    }

    /**
     * 查找订单的详细信息
     *
     *
     * */
    @Override
    public List<OrderItem> Details(String orderId) {
        String sql="select name,count,price,total_price as totalPrice from t_order_item where order_id=?";

        return queryForList(OrderItem.class,sql,orderId);
    }

编写service层

编写orderService

/**
* 创建一个订单
* */
    public String CreateOrder(shopcart shopcart, Integer userid);


    /**
    * 查找该用户的所有订单
    * */
    public List<order> queryMyOrderById(Integer id);

/**
* 查询某个订单的详细信息
* */
    public List<OrderItem> Details(String orderId);


    /**
     *
     * 查询所有
     * */
    public List<order> queryAllOrder();

    /**
    *
    *发货
     *
    * */
    public int sendOrder(String orderId);

    /**
    * 收货
    * */
    public int receiveOrder(String orderId);

编写orderservice实现类

  private OrderDao OrderDao=new OrderDaoImp1();
    private OrderItemDao OrderItem=new OrderItemImp1();
    private BookDao bookDao=new BookDaoImp1();
    @Override
    public String CreateOrder(shopcart shopcart, Integer userid) {
//订单唯一性
        String orderId=System.currentTimeMillis()+""+userid;
//保存订单对象
        order order = new order(orderId, new Date(), new BigDecimal(shopcart.getTotalPrice()), 0, userid);
//        保存订单
        OrderDao.saveOder(order);
//遍历购物车
        for (Map.Entry<Integer,goods> entry:shopcart.getItems().entrySet()) {
//            获取每一个entry
            goods value = entry.getValue();
//转换为每一个订单项
            OrderItem orderItem = new OrderItem(null, value.getName(), value.getCount(), new BigDecimal(value.getUnitPrice()), new BigDecimal(value.getTotalPrice()), orderId);
//保存到订单项到数据库
            OrderItem.saveOrderItem(orderItem);
//根据id查找书
            Book book = bookDao.queryBookById(value.getId());
//           添加订单后更新该书的销量
            book.setSales(book.getSales()+value.getCount());
//            更新改书的库存
            book.setStock(book.getStock()-value.getCount());
        }
//        清空购物车
        shopcart.clear();
        return orderId;
    }

    /**
    *
    *
    * */
    @Override
    public List<order> queryMyOrderById(Integer id) {
        return OrderDao.queryMyOrderById(id);
    }



    /**
    * 查找某个订单的详细信息
    * */
    @Override
    public List<com.atguigu.pojo.OrderItem> Details(String orderId) {
        return OrderItem.Details(orderId);
    }

    @Override
    public List<order> queryAllOrder() {
        return OrderDao.queryAllOrder();
    }
/**
*
* 发货
*
* */
    @Override
    public int sendOrder(String orderId) {

        return OrderDao.changeOrderStatus(1,orderId);
    }


    /**
    * 签收
    *
    * */

    @Override
    public int receiveOrder(String orderId) {
        return OrderDao.changeOrderStatus(2,orderId);
    }

编写webservlet程序

        private OrderService orderService=new OrderServiceImp1();

    /**
    * 生成订单
    *
    * */
    protected void createOrder(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        1、获取购物车对象
        shopcart shopCart = (shopcart) req.getSession().getAttribute("shopCart");
//    获取userid
        User loginUser = (User) req.getSession().getAttribute("user");
//        判断loginUser是否为空
        if (loginUser==null){
//            重定向到主页
            req.getRequestDispatcher("/pages/user/login.jsp").forward(req,resp);
//            需要添加
            return;
        }
//        获取id值
        Integer id = loginUser.getId();
//创建订单
        String uuid = orderService.CreateOrder(shopCart, id);
//设置session域的值
        req.getSession().setAttribute("orderId",uuid);

        resp.sendRedirect(req.getContextPath()+"/pages/cart/checkout.jsp");

    }
    /**
    *
    * 根据用户id查询自己的订单
    * */

    protected void queryMyOrder(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("访问myorder");
        User user = (User) req.getSession().getAttribute("user");


        List<order> orders = orderService.queryMyOrderById(user.getId());
        req.getSession().setAttribute("MyOrder",orders);

       req.getRequestDispatcher("/pages/order/order.jsp").forward(req,resp);
    }
    /**
     * 根据id查询订单信息
     * */

    protected void orderDetails(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("访问orderDetails");
        String orderID = req.getParameter("orderID");

        List<OrderItem> details = orderService.Details(orderID);

        req.setAttribute("orderDetails",details);

        req.getRequestDispatcher("/pages/order/orderDetails.jsp").forward(req,resp);


    }

    /**
     * 查询所有订单
     * */
    protected void queryAllOrder(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        List<order> orders = orderService.queryAllOrder();

        req.setAttribute("AllOrder",orders);

        req.getRequestDispatcher("/pages/manager/order_manager.jsp").forward(req,resp);

    }
    /**
     * 发货
     * */

    protected void sendOrder(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String orderId = req.getParameter("orderID");

        int sendOrder = orderService.sendOrder(orderId);

        req.getSession().setAttribute("orderStatus",sendOrder);

        resp.sendRedirect(req.getHeader("Referer"));

    }

/**
* 签收
* */
    protected void receiveOrder(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String orderId = req.getParameter("orderID");

        int receiveOrder = orderService.receiveOrder(orderId);

        req.getSession().setAttribute("orderStatus",receiveOrder);

        resp.sendRedirect(req.getHeader("Referer"));
    }

  

 

posted @ 2022-01-01 14:58  无忧  阅读(115)  评论(0)    收藏  举报