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 15:10:52 浏览: 50
这段代码看起来像是一个在后端处理用户订单的方法,其中对应着的请求体就是包含着商品信息的订单对象。这个方法接收这个订单对象之后,处理了其中一些信息,比如设置了用户id、订单编号、创建时间等等。然后这个方法又把这个订单对象保存到数据库中,之后又遍历了一下其中的商品信息,通过商品id来寻找对应的商品,然后扣除相应的库存和增加相应的销量。最后还会把这些订单中的商品信息保存到数据库中,之后,如果这个订单是属于购物车类型的话,就会清空当前用户的购物车里面的商品。最后这个方法会通过返回一个包含订单信息的Result对象来告诉调用者这个方法是否执行成功。
相关问题
@PostMapping public Result<?>addUser(@RequestBody User user){ userService.save(user); return Result.success("新增用户成功"); }
根据您的代码,addUser 方法没有使用 passwordEncoder 进行密码加密操作。如果您想在保存用户之前对密码进行加密,您可以按照以下方式修改代码:
```java
@PostMapping("/addUser")
public Result<?> addUser(@RequestBody User user) {
String encryptedPassword = passwordEncoder.encode(user.getPassword());
user.setPassword(encryptedPassword);
userService.save(user);
return Result.success("新增用户成功");
}
```
在上述示例中,我们使用 passwordEncoder 对用户的密码进行加密,并将加密后的密码设置到 user 对象中。然后再将 user 对象保存到数据库中。
这样,当您调用 addUser 接口时,用户的密码将会被加密后存储到数据库中。请确保在调用 addUser 接口之前,已经正确配置并注入了 passwordEncoder 实例。
@PostMapping("/add") public Result<?> addYqType(@RequestBody YqType yqType) { yqTypeService.save(yqType); return Result.success("添加舆情成功"); } 改成保存数据库的某一字段
如果您想要修改代码以保存YqType对象的某个字段到数据库中,您可以在`addYqType`方法中对`yqType`对象进行相应的修改,然后再调用`yqTypeService.save(yqType)`方法来保存到数据库。
例如,假设您要保存`yqType`对象的`fieldName`字段,您可以按照以下方式修改代码:
```java
@PostMapping("/add")
public Result<?> addYqType(@RequestBody YqType yqType) {
// 修改需要保存的字段
yqType.setFieldName("要保存的值");
yqTypeService.save(yqType);
return Result.success("添加舆情成功");
}
```
请确保将`"要保存的值"`替换为您实际需要保存的值,并且将`setFieldName`替换为相应字段的setter方法。这样修改后,调用该接口时,将会将指定字段的值保存到数据库中。