实习知识整理14:确认从购物车中下单的订单信息并实现相关的逻辑处理
2023-12-29 19:36:01
1. 确认订单信息
分析:这个和之前的直接购买的确认订单的信息是一致的,就是需要前端向后端传递数据表中需要的信息,唯一的区别就是在购物车中购买,可能会购买多种商品,用户订单表还是需要插入一条数据,而订单详情表需要插入一或多条数据
?
提交表单向后端传递所需的数据?
后端Controller层需要有对应的字段来接收这些数据?
?
需要写个mapper向数据库中插入数据
之前已经在直接购买的时候,已经写好了向这两个表中插入数据的方法,在这边就可以直接调用了。
UserOrderService.java 接口?
UserOrderServiceImpl.java?实现类
// 通过购物车确认订单
@Override
public ResultDTO<UserOrder> cartConfirmOrder(UserOrder userOrder, CartQueryVO cartQueryVO) {
ResultDTO<UserOrder> 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;
}
上述的实现类中的方法跟之前直接购买的确认订单的方法相似,只不过这边多了一个处理,就是当用户下单后,对应的商品可以从购物车中删除
?所以在这边就需要写个删除的方法
?
?
?
2. 当用户在购物车修改购买数量时,提交订单时,但是未确认订单,则需要更新购物车中用户更新的商品数量
所以我就写了个方法,根据cartId,来更新购物车
mapper?
?
?
?
CartServiceImpl实现类
当用户点击下单时,调用
?
?
?3. 在购物车界面中,还有就是删除商品的功能
通过url向后端传递cartId和userId两个参数
cartId可以用于删除数据,userId可以用于从购物车中渲染数据?
CartController?
?
CartService.java
?
CartServiceImpl.java?
?
mapper
?
?
文章来源:https://blog.csdn.net/m0_61495539/article/details/135290489
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!