以下是 ScanBoot 在真实项目中发现的典型问题示例
库存扣减和订单创建未在同一事务中,高并发下可能导致超卖。建议添加 @Transactional 注解并使用乐观锁或分布式锁。
📍 OrderService.createOrder() → InventoryMapper.deduct()
订单创建接口未做幂等控制,重复请求会创建多个订单。建议使用请求唯一标识或业务幂等键。
📍 OrderController.createOrder()
订单金额 amount 字段未校验是否为正数,可能导致负数金额订单。
📍 OrderDTO.amount
查询超时订单时未限制数量,大数据量下可能导致 OOM。建议分页处理或限制单次处理数量。
📍 OrderMapper.selectTimeoutOrders()
在循环中逐条更新订单状态,存在 N+1 问题。建议使用批量更新。
📍 OrderService.cancelTimeoutOrders()