public Result<?> save(@RequestBody Order order) { // order.setFlow(order.getFlow()); order.setUserId(getUser().getId()); order.setOrderNo(DateUtil.format(new Date(), "yyyyMMddHHmmss") + RandomUtil.randomNumbers(6)); order.setCreateTime(DateUtil.now()); String cartsStr = order.getCarts(); List<Cart> carts = JSONUtil.toBean(cartsStr, new TypeReference<List<Cart>>() { }, true); orderService.save(order); for (Cart cart : carts) { Integer count = cart.getCount(); Long goodsId = cart.getGoodsId(); // 扣库存 Goods goods = goodsService.getById(goodsId); if(goods.getStore() - cart.getCount() < 0) { throw new CustomException("-1", "库存不足"); } goods.setStore(goods.getStore() - cart.getCount()); goods.setSales(goods.getSales() + cart.getCount()); goodsService.updateById(goods); OrderGoods orderGoods = new OrderGoods(); orderGoods.setOrderId(order.getId()); orderGoods.setGoodsId(goodsId); orderGoods.setCount(count); orderGoodsService.save(orderGoods); } if (order.getType() == 1) { // 1表示购物车,0表示直接购买 // 提交订单时清空个人的购物车商品 cartService.remove(Wrappers.<Cart>lambdaUpdate().eq(Cart::getUserId, getUser().getId())); } return Result.success(order); // return Result.success(orderService.save(order)); }
时间: 2023-06-07 18:10:52 浏览: 90
Spring MVC打印@RequestBody、@Response日志的方法
5星 · 资源好评率100%
这段代码看起来像是一个在后端处理用户订单的方法,其中对应着的请求体就是包含着商品信息的订单对象。这个方法接收这个订单对象之后,处理了其中一些信息,比如设置了用户id、订单编号、创建时间等等。然后这个方法又把这个订单对象保存到数据库中,之后又遍历了一下其中的商品信息,通过商品id来寻找对应的商品,然后扣除相应的库存和增加相应的销量。最后还会把这些订单中的商品信息保存到数据库中,之后,如果这个订单是属于购物车类型的话,就会清空当前用户的购物车里面的商品。最后这个方法会通过返回一个包含订单信息的Result对象来告诉调用者这个方法是否执行成功。
阅读全文