Required request body is missing

来源:8-4 创建订单-状态枚举与自测

sa1tedFish

2022-05-09 15:42:53

@PostMapping("order/create")
@ApiOperation("创建订单")
public ApiRestResponse create(@RequestBody @Valid CreateOrderReq createOrderReq) {
    String orderNo = orderService.create(createOrderReq);
    return ApiRestResponse.success(orderNo);
}
@Override
public String create(CreateOrderReq createOrderReq) {
    //1.拿到用户ID
    Integer userId = UserFilter.currentUser.getId();
    //2.从购物车查找已经勾选的商品
    List<CartVO> cartVOList = cartService.list(userId);
    ArrayList<CartVO> cartVOListTemp = new ArrayList<>();
    for (int i = 0; i < cartVOList.size(); i++) {
        CartVO cartVO = cartVOList.get(i);
        if (cartVO.getSelected().equals(Constant.CartStatus.CHECKED)) {
            cartVOListTemp.add(cartVO);
        }
    }
    cartVOList = cartVOListTemp;
    //3.如果购物车已勾选的为空,报错
    if (CollectionUtils.isEmpty(cartVOList)) {
        throw new ImoocMallException(ImoocMallExceptionEnum.CART_EMPTY);
    }
    //4.判断商品的否存在,上下架状态,库存
    validSaleStatusAndStock(cartVOList);
    //5.把购物车对象转为订单item对象
    List<OrderItem> orderItemList = cartVOListToOrderItemList(cartVOList);
    //6.扣库存
    for (int i = 0; i < orderItemList.size(); i++) {
        OrderItem orderItem = orderItemList.get(i);
        Product product = productMapper.selectByPrimaryKey(orderItem.getProductId());
        int stock = product.getStock() - orderItem.getQuantity();
         if (stock < 0) {
             throw new ImoocMallException(ImoocMallExceptionEnum.NOT_ENOUGH);
         }
         product.setStock(stock);
         productMapper.updateByPrimaryKeySelective(product);
    }
    //7.把购物车中已勾选的商品删除
    cleanCart(cartVOList);
    //8.生成订单
    Order order = new Order();
    //9.生成订单号(有独立规则)
    String orderNo = OrderCodeFactory.getOrderCode(Long.valueOf(userId));
    //订单数据赋值
    order.setOrderNo(orderNo);
    order.setUserId(userId);
    order.setTotalPrice(totalPrice(orderItemList));
    order.setReceiverName(createOrderReq.getReceiverName());
    order.setReceiverMobile(createOrderReq.getReceiverMobile());
    order.setReceiverAddress(createOrderReq.getReceiverAddress());
    order.setOrderStatus(Constant.OrderStatusEnum.NOT_PAY.getCode());
    order.setPostage(0);
    order.setPaymentType(1);
    //插入到Order表中
    orderMapper.insertSelective(order);
    //10.循环保存每个商品到order_item表
    for (int i = 0; i < orderItemList.size(); i++) {
        OrderItem orderItem = orderItemList.get(i);
        orderItem.setOrderNo(order.getOrderNo());
        orderItemMapper.insertSelective(orderItem);
    }
    //11.返回结果
    return orderNo;
}

没有代码错误,请问这是什么原因呢:public com.imooc.mall.common.ApiRestResponse com.imooc.mall.controller.OrderController.create(com.imooc.mall.model.request.CreateOrderReq)

写回答

1回答

好帮手慕小尤

2022-05-09

同学你好,1、在课程源码中测试,并未发现问题,建议同学查看是否是导入的包出现问题,同学可以与课程源码进行对比。

2、如果还存在问题,建议同学将全部的异常信息反馈到问答区,便于老师定位问题。

祝学习愉快!

0

0 学习 · 16556 问题

查看课程