Commit 06ffce77c8de083fa63a1fcd4469247d0ef2ae96

Authored by 芋道源码
Committed by GitHub
2 parents 3adaf319 f4490176

Merge pull request #1266 from dadiyang/fix/seckill-stock-incr-deleted-activity

[BUG] 商城秒杀:取消「已删除秒杀活动」下的订单必报系统异常
yudao-module-mall/yudao-module-promotion/src/main/java/cn/iocoder/yudao/module/promotion/service/seckill/SeckillActivityServiceImpl.java
... ... @@ -22,6 +22,7 @@ import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.SeckillProductDO
22 22 import cn.iocoder.yudao.module.promotion.dal.mysql.seckill.seckillactivity.SeckillActivityMapper;
23 23 import cn.iocoder.yudao.module.promotion.dal.mysql.seckill.seckillactivity.SeckillProductMapper;
24 24 import jakarta.annotation.Resource;
  25 +import lombok.extern.slf4j.Slf4j;
25 26 import org.springframework.stereotype.Service;
26 27 import org.springframework.transaction.annotation.Transactional;
27 28 import org.springframework.validation.annotation.Validated;
... ... @@ -45,6 +46,7 @@ import static java.util.Collections.singletonList;
45 46 *
46 47 * @author halfninety
47 48 */
  49 +@Slf4j
48 50 @Service
49 51 @Validated
50 52 public class SeckillActivityServiceImpl implements SeckillActivityService {
... ... @@ -186,6 +188,11 @@ public class SeckillActivityServiceImpl implements SeckillActivityService {
186 188 @Transactional(rollbackFor = Exception.class)
187 189 public void updateSeckillStockIncr(Long id, Long skuId, Integer count) {
188 190 SeckillProductDO product = seckillProductMapper.selectByActivityIdAndSkuId(id, skuId);
  191 + if (product == null) {
  192 + // 秒杀活动已删除时,库存已无回写对象;记日志并跳过,不阻断订单取消主流程
  193 + log.warn("[updateSeckillStockIncr][秒杀活动({}) sku({}) 的商品配置不存在(活动可能已删除),跳过库存回写]", id, skuId);
  194 + return;
  195 + }
189 196 // 更新活动商品库存
190 197 seckillProductMapper.updateStockIncr(product.getId(), count);
191 198 // 更新活动库存
... ...