点餐系统学习日志-订单新建
```java
@Override
@Transactional
public OrderDTO create(OrderDTO orderDTO) {
String orderId = KeyUtil.genUniqueKey();
BigDecimal Count=new BigDecimal(BigInteger.ZERO);
List<CartDTO> cartDTOList = new ArrayList<>();
//1.查询商品
for (OrderDetail detail:orderDTO.getOrderDetailList()){
ProductInfo productInfo = productInfoService.findOne(detail.getProductId());
if(productInfo==null){
throw new SellException(ResultEnum.PRODUCT_NOT_EXIST);
}
//2.计算总价
Count= productInfo.getProductPrice().multiply
(new BigDecimal(detail.getProductQuantity())).add(Count);
//订单详情入库
detail.setOrderId(orderId);
detail.setDetailId(KeyUtil.genUniqueKey());
detail.setProductName(productInfo.getProductName());
detail.setProductPrice(productInfo.getProductPrice());
detail.setProductIcon(productInfo.getProductIcon());
orderDetailRepository.save(detail);
CartDTO cartDTO = new CartDTO(detail.getProductId(), detail.getProductQuantity());
cartDTOList.add(cartDTO);
}
//3.写入订单数据库 OrderMaster OrderDetail
OrderMaster orderMaster= new OrderMaster();
orderDTO.setOrderId(orderId);
BeanUtils.copyProperties(orderDTO,orderMaster);
orderMaster.setOrderAmount(Count);
orderMaster.setOrderStatus(OrderStatusEnum.NEW.getCode());
orderMaster.setPayStatus(PayStatusEnum.WAIT.getCode());
orderMaster.setBuyerOpenid("oTgZpwTx-RzW8wIFHVkux4Uc1ROg");
orderMasterRepository.save(orderMaster);
//4.扣库存
//Java8特性写法
// List<CartDTO> cartDTOList = orderDTO.getOrderDetailList().stream().map(e ->
// new CartDTO(e.getProductId(), e.getProductQuantity())
// ).collect(Collectors.toList());
productInfoService.decreaseStock(cartDTOList);
return orderDTO;
}
1.查询商品
遍历前端传来的商品集合id(里面只有商品id和商品数量)
根据前端传来的商品id 和商品数量
查询出商品 判断商品是否为null
2.计算商品总价
遍历时候计算商品总价
3.订单详情入库
4.订单入库
5.减少库存
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。邮件至 wcfinyourheart@163.com
文章标题:点餐系统学习日志-订单新建
本文作者:wcf
发布时间:2019-12-09, 17:22:23
最后更新:2020-01-26, 10:17:32
原始链接:http://1007638786.github.io/2019/12/09/dian-can-xi-tong-xue-xi-ri-zhi-ding-dan-xin-zeng-liu-cheng-ji-lu/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。