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、如果还存在问题,建议同学将全部的异常信息反馈到问答区,便于老师定位问题。
祝学习愉快!
相似问题