Bläddra i källkod

fix: 处理库存锁可能不释放的问题

luofeiyun 1 vecka sedan
förälder
incheckning
8d483b5e3b

+ 6 - 2
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/order/impl/TradeOrderServiceImpl.java

@@ -367,7 +367,9 @@ public class TradeOrderServiceImpl implements TradeOrderService {
                         .setMarketingName(tradeOrderBO.getExtraInfo().getMarketingName());
                 return CommonResult.success(tradeOrderRespDTO);
             } finally {
-
+                if (unlockRegistered) {
+                    unlockStockLock(stockLock, stockLockKey);
+                }
             }
         } catch (ServiceException e) {
             ExceptionUtils.log(log, "下单失败:", e);
@@ -418,7 +420,9 @@ public class TradeOrderServiceImpl implements TradeOrderService {
                         .setContent(changedFields + shipTradeOrderCreateReqVO.getChangedFields1());
                 return CommonResult.success(tradeOrderRespDTO);
             } finally {
-
+                if (unlockRegistered) {
+                    unlockStockLock(stockLock, stockLockKey);
+                }
             }
         } catch (ServiceException e) {
             try {

+ 12 - 1
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/otc/impl/OtcTradeOrderServiceImpl.java

@@ -676,6 +676,9 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
                         voyageApi.reduceStock(reqDTO);
                     }
                 } finally {
+                    if (unlockRegistered) {
+                        unlockStockLock(stockLock, stockLockKey);
+                    }
                 }
 
                 Map<String, Object> extMap = new HashMap<>();
@@ -1549,7 +1552,9 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
                     voyageApi.reduceStock(reqDTO);
                 }
             } finally {
-
+                if (unlockRegistered) {
+                    unlockStockLock(stockLock, stockLockKey);
+                }
             }
 
 
@@ -2697,6 +2702,9 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
             if (lock.isHeldByCurrentThread() && lock.isLocked()) {
                 lock.unlock();
             }
+            if (!stockUnlockRegistered) {
+                unlockStockLock(stockLock, stockLockKey);
+            }
         }
     }
 
@@ -3211,6 +3219,9 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
             if (lock.isHeldByCurrentThread() && lock.isLocked()) {
                 lock.unlock();
             }
+            if (!stockUnlockRegistered) {
+                unlockStockLock(stockLock, stockLockKey);
+            }
         }
     }
 

+ 3 - 1
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/pay/impl/TradeOrderPayServiceImpl.java

@@ -585,7 +585,9 @@ public class TradeOrderPayServiceImpl implements TradeOrderPayService {
                         voyageApi.cancelReduceStock(reqDTO);
                     }
                 } finally {
-
+                    if (unlockRegistered) {
+                        unlockStockLock(stockLock, stockLockKey);
+                    }
                 }
 
                 //添加订单日志

+ 6 - 2
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/refund/impl/TradeRefundServiceImpl.java

@@ -362,7 +362,9 @@ public class TradeRefundServiceImpl implements TradeRefundService {
                     unlockRegistered = registerUnlockAfterTransaction(stockLock, stockLockKey);
                     voyageApi.cancelReduceStockNew(reqDTO);
                 } finally {
-
+                    if (unlockRegistered) {
+                        unlockStockLock(stockLock, stockLockKey);
+                    }
                 }
             } catch (Exception e) {
                 log.error("取消库存cancelReduceStock失败", e);
@@ -607,7 +609,9 @@ public class TradeRefundServiceImpl implements TradeRefundService {
                     unlockRegistered = registerUnlockAfterTransaction(stockLock, stockLockKey);
                     voyageApi.cancelReduceStock(reqDTO);
                 } finally {
-
+                    if (unlockRegistered) {
+                        unlockStockLock(stockLock, stockLockKey);
+                    }
                 }
             }
         } catch (ServiceException e) {