day31 支付 订单提交

2017-10-26  本文已影响0人  路人爱早茶

---------支付逻辑

在线支付.png

-------------------购买页

<script type="text/javascript">
    function confirmOrder(){
        //提交表单
        $("#orderForm").submit();
    }
</script>
<form id="orderForm" class="form-horizontal" action="${pageContext.request.contextPath }/product" method="post"
                    style="margin-top: 5px; margin-left: 150px;">
                <!-- method的名字 通过表单提交 -->
                <input type="hidden" name="method" value="confirmOrder">
                <!-- 传递订单oid -->
                <input type="hidden" name="oid" value="${order.oid }">
订单的业务操作.png
-------------------封装order和将购物车中item取出导入到order中的list
//提交订单
    public void submitOrder(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        HttpSession session = request.getSession();
        //判断用户是否已经登录 未登录下面代码不执行
        User user = (User) session.getAttribute("user");
        if(user==null){
            //没有登录
        response.sendRedirect(request.getContextPath()+"/login.jsp");
            return;
        }
    //目的:封装好一个Order对象 传递给service层
        Order order = new Order();
        //1、private String oid;//该订单的订单号
        String oid = CommonsUtils.getUUID();
        order.setOid(oid);
        //2、private Date ordertime;//下单时间
        order.setOrdertime(new Date());
        //3、private double total;//该订单的总金额
        //获得session中的购物车
        Cart cart = (Cart) session.getAttribute("cart");
        double total = cart.getTotal();
        order.setTotal(total);
    //4、private int state;//订单支付状态 1代表已付款 0代表未付款
        order.setState(0);
        //5、private String address;//收货地址
        order.setAddress(null);
        //6、private String name;//收货人
        order.setName(null);
        //7、private String telephone;//收货人电话
        order.setTelephone(null);
        //8、private User user;//该订单属于哪个用户
        order.setUser(user);
        //9、该订单中有多少订单项List<OrderItem> orderItems = new ArrayList<OrderItem>();
        //获得购物车中的购物项的集合map
        Map<String, CartItem> cartItems = cart.getCartItems();
        for(Map.Entry<String, CartItem> entry : cartItems.entrySet()){
            //取出每一个购物项
            CartItem cartItem = entry.getValue();
            //创建新的订单项
            OrderItem orderItem = new OrderItem();
            //1)private String itemid;//订单项的id
            orderItem.setItemid(CommonsUtils.getUUID());
            //2)private int count;//订单项内商品的购买数量
            orderItem.setCount(cartItem.getBuyNum());
            //3)private double subtotal;//订单项小计
            orderItem.setSubtotal(cartItem.getSubtotal());
            //4)private Product product;//订单项内部的商品
            orderItem.setProduct(cartItem.getProduct());
            //5)private Order order;//该订单项属于哪个订单
            orderItem.setOrder(order);
            //将该订单项添加到订单的订单项集合中
            order.getOrderItems().add(orderItem);
        }
        //order对象封装完毕
        //传递数据到service层
        ProductService service = new ProductService();
        service.submitOrder(order);
        session.setAttribute("order", order);
        //页面跳转      response.sendRedirect(request.getContextPath()+"/order_info.jsp");
    }
----------------在service需使用事务确保订单和订单项同时进入数据库
订单分析2.png
上一篇下一篇

猜你喜欢

热点阅读