@PutMapping public Result<?> update(@RequestBody Order order) { orderService.updateById(order); return Result.success(); }续写优化之后,取消订单,商品数量恢复,个人余额恢复 /** * 付款 * @param id * @return */ @Transactional @PutMapping("/pay/{id}") public Result<?> pay(@PathVariable Long id) { Order order = orderService.getById(id); BigDecimal totalPrice = order.getTotalPrice(); Long userId = getUser().getId(); User user = userService.findById(userId); if (user.getAccount().compareTo(totalPrice) <= 0) { throw new CustomException("-1", "余额不足"); } user.setAccount(user.getAccount().subtract(totalPrice)); // 设置用户余额 order.setFreeze(order.getTotalPrice()); userService.updateById(user); order.setState("待发货"); orderService.updateById(order); return Result.success(); }
时间: 2023-06-07 11:10:53 浏览: 212
对于这段代码,我会建议在取消订单时,再次检查订单状态是否为待支付状态,如果不是,则不允许取消订单。在商品数量恢复和个人余额恢复时,建议使用事务来完成操作,避免出现数据不一致的情况。同时,在更新用户余额时,建议使用数据库的原子性操作,如update ... set account = account - totalPrice where user_id = userId,避免并发操作导致的数据不一致问题。
阅读全文
相关推荐




