From f951a9b65213fad74bf320efb1e6757396f03eb7 Mon Sep 17 00:00:00 2001 From: chen-xin-zhi <3588068430@qq.com> Date: Thu, 19 Dec 2024 14:24:01 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BA=86=E5=95=86=E5=93=81?= =?UTF-8?q?=E7=B1=BB=E5=88=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/order/OrderController.java | 7 +++--- .../service/good/CartRecordService.java | 2 +- .../good/impl/CartRecordServiceImpl.java | 23 +++++++++++++++++-- .../java/com/cultural/heritage/test/A.java | 8 ++++++- 4 files changed, 32 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/cultural/heritage/controller/order/OrderController.java b/src/main/java/com/cultural/heritage/controller/order/OrderController.java index 55a044d..6c35992 100644 --- a/src/main/java/com/cultural/heritage/controller/order/OrderController.java +++ b/src/main/java/com/cultural/heritage/controller/order/OrderController.java @@ -76,7 +76,7 @@ public class OrderController { */ @PostMapping("/add/cart") @Transactional(rollbackFor = Exception.class) - @Operation(summary = "用户通过购物车创建订单", description = "参数:") + @Operation(summary = "用户通过购物车创建订单", description = "参数:购物车订单创建请求体,权限:所有人,方法名:addCartOrder") public BaseResponse addCartOrder(@RequestBody CartOrderAddRequest cartOrderAddRequest, HttpServletRequest request) { if (cartOrderAddRequest == null) { throw new BusinessException(ErrorCode.PARAMS_ERROR); @@ -86,15 +86,14 @@ public class OrderController { Long userId = loginUser.getId(); - - // 封装成订单创建请求体 OrderMainInfoAddRequest orderMainInfoAddRequest = new OrderMainInfoAddRequest(); BeanUtils.copyProperties(cartOrderAddRequest, orderMainInfoAddRequest); // 校验购物车数据是否准确 List cartOrderItemAddRequestList = cartOrderAddRequest.getCartOrderItemAddRequestList(); - + boolean isAccurate = cartRecordService.validIsConsistent(cartOrderItemAddRequestList); + ThrowUtils.throwIf(!isAccurate, ErrorCode.SYSTEM_ERROR, "当前购物车中的某些商品已下架或者库存不足,无法生成订单"); // 获取购物车id列表 List cartIds = cartOrderItemAddRequestList.stream().map(CartOrderItemAddRequest::getCartRecordId).toList(); // 根据id列表获取购物车商品信息 diff --git a/src/main/java/com/cultural/heritage/service/good/CartRecordService.java b/src/main/java/com/cultural/heritage/service/good/CartRecordService.java index 69024c6..71696b6 100644 --- a/src/main/java/com/cultural/heritage/service/good/CartRecordService.java +++ b/src/main/java/com/cultural/heritage/service/good/CartRecordService.java @@ -31,7 +31,7 @@ public interface CartRecordService extends IService { /** - * 根据购物车订单明细列表校验购物车商品项的准确性 + * 在提交订单页校验购物车商品项的准确性 */ boolean validIsConsistent(List cartOrderItemAddRequestList); diff --git a/src/main/java/com/cultural/heritage/service/good/impl/CartRecordServiceImpl.java b/src/main/java/com/cultural/heritage/service/good/impl/CartRecordServiceImpl.java index cf16812..f9feede 100644 --- a/src/main/java/com/cultural/heritage/service/good/impl/CartRecordServiceImpl.java +++ b/src/main/java/com/cultural/heritage/service/good/impl/CartRecordServiceImpl.java @@ -175,11 +175,30 @@ public class CartRecordServiceImpl extends ServiceImpl cartOrderItemAddRequestList) { - return false; + + // 封装map集合(键:购物车id, 值:购买数量) + Map map = new HashMap<>(); + for (CartOrderItemAddRequest cartOrderItemAddRequest : cartOrderItemAddRequestList) { + Long cartRecordId = cartOrderItemAddRequest.getCartRecordId(); + Integer quantity = cartOrderItemAddRequest.getQuantity(); + map.put(cartRecordId, quantity); + } + // 修改购物车商品项的购买数量 + List cartRecordIds = cartOrderItemAddRequestList.stream().map(CartOrderItemAddRequest::getCartRecordId).toList(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", cartRecordIds); + List cartRecordList = this.list(queryWrapper); + for (CartRecord cartRecord : cartRecordList) { + Long id = cartRecord.getId(); + Integer quantity = map.get(id); + cartRecord.setQuantity(quantity); + } + List cartIds = getInvalidCartIds(cartRecordList); + return cartIds.isEmpty(); } diff --git a/src/test/java/com/cultural/heritage/test/A.java b/src/test/java/com/cultural/heritage/test/A.java index 8e8df3d..b632a2e 100644 --- a/src/test/java/com/cultural/heritage/test/A.java +++ b/src/test/java/com/cultural/heritage/test/A.java @@ -1,6 +1,12 @@ package com.cultural.heritage.test; +import java.util.ArrayList; +import java.util.List; + public class A { - public Long num = 10L; + public static void main(String[] args) { + List list = new ArrayList<>(); + System.out.println(list.isEmpty()); + } }