书城第七阶段补充

DAO层

dao

OrderDao

package com.atguigu.dao;

import com.atguigu.pojo.Order;

import java.util.List;

public interface OrderDao {

    public int saveOrder(Order order);

    public List<Order> queryOrders();

    public int changeOrderStatus(String orderId,int status);

    public  List<Order> queryByUserId(int userId);

}

OrderItemDao

package com.atguigu.dao;

import com.atguigu.pojo.OrderItem;

import java.util.List;

public interface OrderItemDao {
    public int saveOrderItem(OrderItem orderItem);
    public List<OrderItem> queryOrderItemByOrderId(String orderId);
}

impl

OrderDaoImpl

package com.atguigu.dao.impl;

import com.atguigu.dao.OrderDao;
import com.atguigu.pojo.Order;

import java.util.List;

public class OrderDaoImpl extends BaseDao implements OrderDao {


    @Override
    public int saveOrder(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> queryOrders() {
        String sql = "select order_id orderId,create_time createTime,price,status,user_id from t_order";
        return queryForList(Order.class, sql);
    }
    @Override
    public int changeOrderStatus(String orderId, int status) {
        String sql="update t_order set status=? where order_id=?";
        return update(sql,status,orderId);
    }

    @Override
    public List<Order> queryByUserId(int userId) {
        String sql = "select order_id orderId,create_time createTime,price,status,user_id userId from t_order where user_id=?";
        return queryForList(Order.class,sql,userId);
    }
}

OrderItemDaoImpl

package com.atguigu.service;

import com.atguigu.pojo.Cart;
import com.atguigu.pojo.Order;
import com.atguigu.pojo.OrderItem;

import java.util.List;

public interface OrderService {
    public String createOrder(Cart cart,Integer userId);
    public List<Order> showAllOrders();
    public int sendOrder(String orderId);
    public List<OrderItem> showOrderDetail(String orderId);
    public List<Order> showMyOrders(int userId);
    public int receiverOrder(String orderId);
}

test

OrderDaoTest

package com.atguigu.test;

import com.atguigu.dao.OrderDao;
import com.atguigu.dao.impl.OrderDaoImpl;
import com.atguigu.pojo.Order;
import org.junit.Test;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

public class OrderDaoTest {
    @Test
    public void saveOrder() {
        OrderDao orderDao=new OrderDaoImpl();
        orderDao.saveOrder(new Order("1234567890",new Date(),new BigDecimal(100),0,1));
    }
    @Test
    public void queryOrders() {
        OrderDao orderDao=new OrderDaoImpl();
        List<Order> orders = orderDao.queryOrders();
        System.out.println(orders);
    }

    @Test
    public void changeOrderStatus() {
        OrderDao orderDao=new OrderDaoImpl();
        orderDao.changeOrderStatus("1",1);
    }


    @Test
    public void queryByUserId() {
        OrderDao orderDao=new OrderDaoImpl();
        List<Order> orders = orderDao.queryByUserId(1);
        System.out.println(orders);
    }
}

OrderItemDaoTest

package com.atguigu.test;

import com.atguigu.pojo.Cart;
import com.atguigu.pojo.CartItem;
import com.atguigu.pojo.Order;
import com.atguigu.pojo.OrderItem;
import com.atguigu.service.OrderService;
import com.atguigu.service.impl.OrderServiceImpl;
import org.junit.Test;

import java.math.BigDecimal;
import java.util.List;

public class OrderServiceTest {
    private OrderService orderService=new OrderServiceImpl();

    @Test
    public void createOrder() {
        Cart cart=new Cart();
        cart.addItem(new CartItem(1,"java",1,new BigDecimal(1000),new BigDecimal(1000)));
        cart.addItem(new CartItem(1,"java",1,new BigDecimal(1000),new BigDecimal(1000)));
        cart.addItem(new CartItem(2,"数据结构与算法",1,new BigDecimal(100),new BigDecimal(100)));

        OrderService orderService=new OrderServiceImpl();

        System.out.println("订单号是:"+orderService.createOrder(cart, 1));
    }

    @Test
    public void showAllOrders() {
        List<Order> orders = orderService.showAllOrders();
        System.out.println(orders);
    }


    @Test
    public void sendOrder() {
        int i = orderService.sendOrder("1");
        System.out.println(i);
    }

    @Test
    public void showOrderDetail() {
        List<OrderItem> orderItems = orderService.showOrderDetail("1");
        System.out.println(orderItems);
    }

    @Test
    public void showMyOrders() {
        List<Order> orders = orderService.showMyOrders(1);
        System.out.println(orders);
    }

    @Test
    public void receiverOrder() {
        int i = orderService.receiverOrder("1");
        System.out.println(i);
    }

}

Service层

service

OrderService

package com.atguigu.service;

import com.atguigu.pojo.Cart;
import com.atguigu.pojo.Order;
import com.atguigu.pojo.OrderItem;

import java.util.List;

public interface OrderService {
    public String createOrder(Cart cart,Integer userId);
    public List<Order> showAllOrders();
    public int sendOrder(String orderId);
    public List<OrderItem> showOrderDetail(String orderId);
    public List<Order> showMyOrders(int userId);
    public int receiverOrder(String orderId);
}

impl

OrderServiceImpl

package com.atguigu.service.impl;

import com.atguigu.dao.BookDao;
import com.atguigu.dao.OrderDao;
import com.atguigu.dao.OrderItemDao;
import com.atguigu.dao.impl.BookDaoImpl;
import com.atguigu.dao.impl.OrderDaoImpl;
import com.atguigu.dao.impl.OrderItemDaoImpl;
import com.atguigu.pojo.*;
import com.atguigu.service.OrderService;

import java.util.Date;
import java.util.List;
import java.util.Map;

public class OrderServiceImpl implements OrderService {
    private OrderDao orderDao =new OrderDaoImpl();
    private OrderItemDao orderItemDao=new OrderItemDaoImpl();
    private BookDao bookDao=new BookDaoImpl();
    @Override
    public String createOrder(Cart cart, Integer userId) {
        //订单号==唯一性
        String orderId=System.currentTimeMillis()+""+userId;
        //创建一个订单对象
        Order order=new Order(orderId,new Date(),cart.getTotalPrice(),0,userId);
        //保存订单
        orderDao.saveOrder(order);

        //遍历购物车中每一个商品项转换为订单保存到数据库
        for (Map.Entry<Integer, CartItem>entry:cart.getItems().entrySet()) {
            //获取购物车每一个商品项
            CartItem cartItem=entry.getValue();
            //转换为订单
            OrderItem orderItem=new OrderItem(null,cartItem.getName(),cartItem.getCount(),cartItem.getPrice(),cartItem.getTotalPrice(),orderId);
            //保存到数据库
            orderItemDao.saveOrderItem(orderItem);

            //更新库存和销量
            Book book = bookDao.queryBookById(cartItem.getId());
            book.setSales(book.getSales()+cartItem.getCount());
            book.setStock(book.getStock()-cartItem.getCount());
            bookDao.updateBook(book);
        }
        //清空购物车
        cart.clear();

        return orderId;
    }

    @Override
    public List<Order> showAllOrders() {
        return orderDao.queryOrders();
    }

    @Override
    public int sendOrder(String orderId) {
        return orderDao.changeOrderStatus(orderId,1);
    }

    @Override
    public List<OrderItem> showOrderDetail(String orderId) {
        return orderItemDao.queryOrderItemByOrderId(orderId);
    }

    @Override
    public List<Order> showMyOrders(int userId) {
        return orderDao.queryByUserId(userId);
    }

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

}

test

OrderServiceTest

package com.atguigu.test;

import com.atguigu.pojo.Cart;
import com.atguigu.pojo.CartItem;
import com.atguigu.pojo.Order;
import com.atguigu.pojo.OrderItem;
import com.atguigu.service.OrderService;
import com.atguigu.service.impl.OrderServiceImpl;
import org.junit.Test;

import java.math.BigDecimal;
import java.util.List;

public class OrderServiceTest {
    private OrderService orderService=new OrderServiceImpl();

    @Test
    public void createOrder() {
        Cart cart=new Cart();
        cart.addItem(new CartItem(1,"java",1,new BigDecimal(1000),new BigDecimal(1000)));
        cart.addItem(new CartItem(1,"java",1,new BigDecimal(1000),new BigDecimal(1000)));
        cart.addItem(new CartItem(2,"数据结构与算法",1,new BigDecimal(100),new BigDecimal(100)));

        OrderService orderService=new OrderServiceImpl();

        System.out.println("订单号是:"+orderService.createOrder(cart, 1));
    }

    @Test
    public void showAllOrders() {
        List<Order> orders = orderService.showAllOrders();
        System.out.println(orders);
    }


    @Test
    public void sendOrder() {
        int i = orderService.sendOrder("1");
        System.out.println(i);
    }

    @Test
    public void showOrderDetail() {
        List<OrderItem> orderItems = orderService.showOrderDetail("1");
        System.out.println(orderItems);
    }

    @Test
    public void showMyOrders() {
        List<Order> orders = orderService.showMyOrders(1);
        System.out.println(orders);
    }

    @Test
    public void receiverOrder() {
        int i = orderService.receiverOrder("1");
        System.out.println(i);
    }

}

Web层

OrderServlet

package com.atguigu.web;

import com.atguigu.pojo.Cart;
import com.atguigu.pojo.Order;
import com.atguigu.pojo.OrderItem;
import com.atguigu.pojo.User;
import com.atguigu.service.OrderService;
import com.atguigu.service.impl.OrderServiceImpl;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

public class OrderServlet extends BaseServlet {

    private OrderService orderService = new OrderServiceImpl();

    /**
     * 生成订单
     *
     * @param req
     * @param resp
     * @throws ServletException
     * @throws IOException
     */
    public void createOrder(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //先获取Cart购物车对象
        Cart cart = (Cart) req.getSession().getAttribute("cart");
        //获取Userid
        User loginUser = (User) req.getSession().getAttribute("user");
        if (loginUser == null) {
            req.getRequestDispatcher("/pages/user/login.jsp").forward(req, resp);
            return;
        }

//        System.out.println("OrderServlet 程序在["+Thread.currentThread().getName()+"]中");

        Integer userId = loginUser.getId();
        //调用orderservice.createorder(cart,userid);生成订单

        String orderId = orderService.createOrder(cart, userId);


//        req.setAttribute("orderId",orderId);
        //请求转发至pages/cart/checkout.jsp
//        req.getRequestDispatcher("/pages/cart/checkout.jsp").forward(req,resp);

        req.getSession().setAttribute("orderId", orderId);
        resp.sendRedirect(req.getContextPath() + "/pages/cart/checkout.jsp");
    }

    /**
     * 查看所有订单
     *
     * @param req
     * @param resp
     * @throws ServletException
     * @throws IOException
     */
    public void showAllOrders(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        List<Order> showAllOrders = orderService.showAllOrders();
        req.getSession().setAttribute("showAllOrders", showAllOrders);

        resp.sendRedirect(req.getContextPath() + "/pages/manager/order_manager.jsp");
    }

    /**
     * 发货
     *
     * @param req
     * @param resp
     * @throws ServletException
     * @throws IOException
     */
    public void sendOrder(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取orderId
        String orderId= req.getParameter("thisOrderId");
        //调用 orderService.sendOrder(orderId);
        orderService.sendOrder(orderId);

        resp.sendRedirect(req.getContextPath() + "/orderServlet?action=showAllOrder");

    }

    /**
     * 查看订单详情
     *
     * @param req
     * @param resp
     * @throws ServletException
     * @throws IOException
     */
    public void showOrderDetail(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取orderId
        String orderId= req.getParameter("thisOrderId");
        //调用 orderService.showOrderDetail(orderId);
        List<OrderItem> orderItems = orderService.showOrderDetail(orderId);
        req.getSession().setAttribute("orderItems", orderItems);
        resp.sendRedirect(req.getContextPath() +"/pages/orderDetail/orderDetail.jsp");
    }

    /**
     * 查看我的订单
     *
     * @param req
     * @param resp
     * @throws ServletException
     * @throws IOException
     */
    public void showMyOrder(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取Userid
        User loginUser = (User) req.getSession().getAttribute("user");
        if (loginUser == null) {
            req.getRequestDispatcher("/pages/user/login.jsp").forward(req, resp);
            return;
        }
        Integer userId = loginUser.getId();
        //调用orderService.showMyOrders(userId);
        List<Order> showMyOrders = orderService.showMyOrders(userId);
        req.getSession().setAttribute("showMyOrders", showMyOrders);
        resp.sendRedirect(req.getContextPath() + "/pages/order/order.jsp");
    }

    /**
     * 签收订单/确认收货
     *
     * @param req
     * @param resp
     * @throws ServletException
     * @throws IOException
     */
    public void receiverOrder(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String orderId= req.getParameter("thisOrderId");
        orderService.receiverOrder(orderId);
        resp.sendRedirect(req.getContextPath() + "/orderServlet?action=showMyOrder");
    }




}

重新配置web.xml

<servlet>
        <servlet-name>OrderServlet</servlet-name>
        <servlet-class>com.atguigu.web.OrderServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>OrderServlet</servlet-name>
        <url-pattern>/orderServlet</url-pattern>
        <url-pattern>/pages/manager/orderServlet</url-pattern>
    </servlet-mapping>

页面

新增 pages/ordeDetailr/orderDetail.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--
  Created by IntelliJ IDEA.
  User: lenovo
  Date: 2021/9/23
  Time: 17:15
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>订单详情</title>
    <%--静态包含 base标签,css样式,jquery文件 --%>
    <%@ include file="/pages/common/head.jsp"%>
</head>
<body>
<%@ include file="/pages/common/login_sucess_menu.jsp"%>

<div id="main">
        <table>
            <tr>
                <td>商品名称</td>
                <td>数量</td>
                <td>单价</td>
                <td>总价</td>
                <td>订单号</td>

            </tr>
<%--            ${sessionScope.orderItems}--%>

            <c:if test="${not empty sessionScope.orderItems}">
                <%--  如果订单非空的情况   --%>
                <c:forEach items="${sessionScope.orderItems}" var="order">
                    <tr>
                        <td>${order.name}</td>
                        <td>${order.count}</td>
                        <td>${order.price}</td>
                        <td>${order.totalPrice}</td>
                        <td>${order.orderId}</td>

                    </tr>
                </c:forEach>
            </c:if>
        </table>
    </div>



    <%--静态包含页脚内容--%>
    <%@include file="/pages/common/footer.jsp"%>
</body>
</html>

修改 order.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--
  Created by IntelliJ IDEA.
  User: lenovo
  Date: 2021/8/21
  Time: 下午 02:45
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>我的订单</title>

    <%--静态包含 base标签,css样式,jquery文件 --%>
    <%@ include file="/pages/common/head.jsp"%>


    <style type="text/css">
    h1 {
        text-align: center;
        margin-top: 200px;
    }
</style>
</head>
<body>

     <div id="header">
         <img class="logo_img" alt="" src="../../static/img/logo.gif">
         <span class="wel_word">我的订单</span>

         <%-- 静态包含登录成功之后的菜单--%>
         <%@ include file="/pages/common/login_sucess_menu.jsp"%>

     </div>
    <div id="main">
        <table>
            <tr>
                <td>日期</td>
                <td>金额</td>
                <td>状态</td>
                <td>详情</td>

            </tr>
<%--            ${sessionScope.showMyOrders}--%>
            <c:if test="${empty sessionScope.showMyOrders}">
                <%--  如果订单为空的情况   --%>
                <td colspan="4"><a href="index.jsp"> 亲,当前订单为空!去首页看看吧!!!</a></td>
            </c:if>

            <c:if test="${not empty sessionScope.showMyOrders}">
                <%--  如果订单非空的情况   --%>
                <c:forEach items="${sessionScope.showMyOrders}" var="showMyOrder">

                    <tr>
                        <td>${showMyOrder.createTime}</td>
                        <td>${showMyOrder.price}</td>
                        <c:if test="${showMyOrder.status==0}">
                            <td>
                                未发货
                            </td>
                        </c:if>
                        <c:if test="${showMyOrder.status==1}">
                            <td>
                                已发货
                                <a href="orderServlet?action=receiverOrder&thisOrderId=${showMyOrder.orderId}">收货</td>
                            </td>
                        </c:if>
                        <c:if test="${showMyOrder.status==2}">
                            <td>已签收</td>
                        </c:if>
                        <td><a href="orderServlet?action=showOrderDetail&thisOrderId=${showMyOrder.orderId}">查看详情</a> </td>

                    </tr>
                </c:forEach>
            </c:if>
        </table>
    </div>


     <%--静态包含页脚内容--%>
     <%@include file="/pages/common/footer.jsp"%>


</body>
</html>

修改 order_manager.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--
  Created by IntelliJ IDEA.
  User: lenovo
  Date: 2021/8/21
  Time: 下午 02:47
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html>
<head>
    <title>订单管理</title>
    <%--静态包含 base标签,css样式,jquery文件 --%>
    <%@ include file="/pages/common/head.jsp"%>
</head>
<body>
    <div id="header">
        <img class="logo_img" alt=""  src="../../static/img/logo.gif">
        <span class="wel_word">订单管理系统</span>
        <%-- 静态包含manager 管理模块的菜单       --%>
        <%@ include file="/pages/common/manager_menu.jsp"%>
    </div>
    <div id="main">



        <table>

            <tr>
                <td>日期</td>
                <td>金额</td>
                <td>详情</td>
                <td>状态</td>
            </tr>

<%--            ${sessionScope.showAllOrders}--%>
            <c:if test="${empty sessionScope.showAllOrders}">
                <%--  如果订单为空的情况   --%>
                <td colspan="4"> 亲,当前订单为空!</td>
            </c:if>

            <c:if test="${not empty sessionScope.showAllOrders}">
                <c:forEach items="${sessionScope.showAllOrders}" var="order">

                    <tr>
                        <td>${order.createTime}</td>
                        <td>${order.price}</td>
                        <td><a href="orderServlet?action=showOrderDetail&thisOrderId=${order.orderId}">查看详情</a></td>

                        <c:if test="${order.status==0}">
                            <td>未发货 <a href="orderServlet?action=sendOrder&thisOrderId=${order.orderId}">发货</a> </td>
                        </c:if>
                        <c:if test="${order.status==1}">
                            <td>已发货</td>
                        </c:if>
                        <c:if test="${order.status==2}">
                            <td>已签收</td>
                        </c:if>


                    </tr>
                </c:forEach>

            </c:if>




        </table>


    </div>

    <%--静态包含页脚内容--%>
    <%@include file="/pages/common/footer.jsp"%>


</body>
</html>

修改 manager_menu.jsp

<%--
  Created by IntelliJ IDEA.
  User: lenovo
  Date: 2021/8/21
  Time: 下午 05:38
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<div>
    <a href="manager/bookServlet?action=page">图书管理</a>
    <a href="orderServlet?action=showAllOrders">订单管理</a>
    <a href="index.jsp">返回商城</a>
</div>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

日星月云

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值