Browse Source

订单完成后自动解锁

lutong 2 tháng trước cách đây
mục cha
commit
83c7c126d7

+ 18 - 0
alien-dining/src/main/java/shop/alien/dining/service/impl/StoreOrderServiceImpl.java

@@ -317,6 +317,15 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderMapper, StoreOr
         // 下单后不清空购物车,允许加餐(加餐时添加到同一订单)
         // 只有在支付完成后才清空购物车
 
+        // 创建订单成功后,自动解锁订单锁定
+        try {
+            diningService.unlockOrder(dto.getTableId(), userId);
+            log.info("订单创建成功后自动解锁订单锁定, tableId={}, userId={}", dto.getTableId(), userId);
+        } catch (Exception e) {
+            log.warn("自动解锁订单锁定失败, tableId={}, userId={}, error={}", dto.getTableId(), userId, e.getMessage());
+            // 解锁失败不影响订单创建,只记录警告日志
+        }
+
         if (isUpdate) {
             log.info("订单更新成功, orderId={}, orderNo={}", finalOrder.getId(), finalOrderNo);
         } else {
@@ -381,6 +390,15 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderMapper, StoreOr
         // resetTableAfterPayment 方法会完全清空购物车,所以不需要单独调用 clearCart
         resetTableAfterPayment(order.getTableId());
 
+        // 支付订单成功后,自动解锁结算锁定
+        try {
+            diningService.unlockSettlement(orderId, userId);
+            log.info("订单支付成功后自动解锁结算锁定, orderId={}, userId={}", orderId, userId);
+        } catch (Exception e) {
+            log.warn("自动解锁结算锁定失败, orderId={}, userId={}, error={}", orderId, userId, e.getMessage());
+            // 解锁失败不影响订单支付,只记录警告日志
+        }
+
         log.info("订单支付成功, orderId={}", orderId);
         return order;
     }