实习知识整理14:确认从购物车中下单的订单信息并实现相关的逻辑处理

1. 确认订单信息

分析:这个和之前的直接购买的确认订单的信息是一致的,就是需要前端向后端传递数据表中需要的信息,唯一的区别就是在购物车中购买,可能会购买多种商品,用户订单表还是需要插入一条数据,而订单详情表需要插入一或多条数据

 

提交表单向后端传递所需的数据 

实习知识整理14:确认从购物车中下单的订单信息并实现相关的逻辑处理_第1张图片

后端Controller层需要有对应的字段来接收这些数据 

实习知识整理14:确认从购物车中下单的订单信息并实现相关的逻辑处理_第2张图片 

需要写个mapper向数据库中插入数据

之前已经在直接购买的时候,已经写好了向这两个表中插入数据的方法,在这边就可以直接调用了。

UserOrderService.java 接口 

实习知识整理14:确认从购物车中下单的订单信息并实现相关的逻辑处理_第3张图片

UserOrderServiceImpl.java 实现类

    // 通过购物车确认订单
    @Override
    public ResultDTO cartConfirmOrder(UserOrder userOrder, CartQueryVO cartQueryVO) {
        ResultDTO userCartOrderResultDTO = new ResultDTO<>();
        // 判断用户是否登录
        if (0!= userOrder.getUserId()) {
            int orderId = (int)(Math.random() * 1234567890);  // 生成随机的订单编号
            userOrder.setOrderId(orderId);
            userOrder.setOrderTime(new Timestamp(System.currentTimeMillis()));  // 将当前系统的时间直接填入
            // 订单插入成功,才能进行订单详情插入
            int orderSubmit = userOrderMapper.insertUserOrder(userOrder);
            if (orderSubmit > 0) {
                boolean deleteCartFlag = false;

                // 需要删除对应的购物车信息,同时新增订单详情
                for (Cart cart : cartQueryVO.getCartList()) {
                    // 构建订单详情
                    OrderDetail orderDetail = new OrderDetail(0, orderId, cart.getItemId(), cart.getBuyCount());
                    int orderDetailSubmit = orderDetailMapper.insertOrderDetail(orderDetail);

                    if (orderDetailSubmit > 0) {
                        // 删除购物车信息
                        int deleteCartResult = cartMapper.deleteCartByCartId(cart.getCartId());
                        if (deleteCartResult > 0) {
                            deleteCartFlag = true;
                            System.out.println(cart.getCartId() + "该购物车记录删除成功");
                        } else {
                            System.out.println(cart.getCartId() + "该购物车记录删除失败");
                            deleteCartFlag = false;
                            break;
                        }
                    } else {
                        userCartOrderResultDTO.setMsg("订单详情生成失败!");
                        userCartOrderResultDTO.setData(null);
                    }
                }
                if(deleteCartFlag == true) {
                    userCartOrderResultDTO.setCode(200);
                    userCartOrderResultDTO.setMsg("下单成功!");
                    userCartOrderResultDTO.setData(userOrder);
                } else {
                    System.out.println("下单失败!");
                }
            } else {
                System.out.println("下单失败!");
            }
        } else {
            userCartOrderResultDTO.setMsg("用户未登录!");
        }
        return userCartOrderResultDTO;
    }

上述的实现类中的方法跟之前直接购买的确认订单的方法相似,只不过这边多了一个处理,就是当用户下单后,对应的商品可以从购物车中删除

 所以在这边就需要写个删除的方法

实习知识整理14:确认从购物车中下单的订单信息并实现相关的逻辑处理_第4张图片

 

 

 

2. 当用户在购物车修改购买数量时,提交订单时,但是未确认订单,则需要更新购物车中用户更新的商品数量

所以我就写了个方法,根据cartId,来更新购物车

mapper 

 

 

 

CartServiceImpl实现类

实习知识整理14:确认从购物车中下单的订单信息并实现相关的逻辑处理_第5张图片

当用户点击下单时,调用

实习知识整理14:确认从购物车中下单的订单信息并实现相关的逻辑处理_第6张图片 

 

 3. 在购物车界面中,还有就是删除商品的功能

通过url向后端传递cartId和userId两个参数

cartId可以用于删除数据,userId可以用于从购物车中渲染数据 

CartController 

实习知识整理14:确认从购物车中下单的订单信息并实现相关的逻辑处理_第7张图片

 

CartService.java

 实习知识整理14:确认从购物车中下单的订单信息并实现相关的逻辑处理_第8张图片

CartServiceImpl.java 

实习知识整理14:确认从购物车中下单的订单信息并实现相关的逻辑处理_第9张图片

 

mapper

 

 

你可能感兴趣的:(实习课项目知识整理,java,javascript,jquery)