Просмотр исходного кода

Update CesGoodStockRecordsServiceImpl.java

shenzhongzheng лет назад: 2
Родитель
Сommit
37e468f17d

+ 4 - 6
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/rooms/service/CesGoodStockRecordsServiceImpl.java

@@ -42,24 +42,22 @@ public class CesGoodStockRecordsServiceImpl extends ServiceImpl<CesGoodStockReco
 
     @Transactional(rollbackOn = Exception.class)
     public Result create(CesGoodStockRecordsDto dto){
-
         /**
          * 这里需要锁资源  分布式事务锁 采用redis 实现  考虑到数据操作的原子性 (设置redis 锁 统一要同步设置过期时间 60 秒 )
          */
         String key = String.format("stock::record::create:%s:%s", dto.getGoodId(),dto.getHotelId());
         Lock lock = redisLockRegistry.obtain(key);  //获取锁资源
 
-        //查询商品是否存在
-        CesGoods goods = goodsService.fetchByIdAndHotelId(dto.getGoodId(),dto.getHotelId());
-        if(ObjectUtils.isEmpty(goods)) return Result.error("商品数据未找到!");
-
         logger.info("lock begin");
         logger.info("创建 redis 资源锁 key:{}", key);
         try{
             //开启锁
             lock.lock();
             logger.info("开启 redis 资源锁");
-
+            
+            //查询商品是否存在
+            CesGoods goods = goodsService.fetchByIdAndHotelId(dto.getGoodId(),dto.getHotelId());
+            if(ObjectUtils.isEmpty(goods)) return Result.error("商品数据未找到!");
             //业务逻辑处理 减库存 加库存 这样写更清晰
             int num = dto.getGoodNum().intValue();
             int count = goods.getInventory().intValue();