Jelajahi Sumber

维护管理员权限 重置

lutong 2 bulan lalu
induk
melakukan
62ea54b2c2

+ 35 - 31
alien-dining/src/main/java/shop/alien/dining/service/impl/StoreOrderServiceImpl.java

@@ -1,6 +1,7 @@
 package shop.alien.dining.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -594,18 +595,17 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderMapper, StoreOr
             throw new RuntimeException("餐桌不存在");
         }
         
-        // 1. 删除购物车数据(逻辑删除)
+        // 1. 删除购物车数据(逻辑删除,使用 MyBatis-Plus 的 removeBatchIds
         LambdaQueryWrapper<StoreCart> cartWrapper = new LambdaQueryWrapper<>();
         cartWrapper.eq(StoreCart::getTableId, tableId);
         cartWrapper.eq(StoreCart::getDeleteFlag, 0);
         List<StoreCart> cartList = storeCartMapper.selectList(cartWrapper);
         if (cartList != null && !cartList.isEmpty()) {
-            Date now = new Date();
-            for (StoreCart cart : cartList) {
-                cart.setDeleteFlag(1);
-                cart.setUpdatedTime(now);
-                storeCartMapper.updateById(cart);
-            }
+            List<Integer> cartIds = cartList.stream()
+                    .map(StoreCart::getId)
+                    .collect(Collectors.toList());
+            // 使用 removeBatchIds 进行逻辑删除(MyBatis-Plus 会自动处理 @TableLogic)
+            storeCartMapper.deleteBatchIds(cartIds);
             log.info("删除购物车数据, tableId={}, count={}", tableId, cartList.size());
         }
         
@@ -615,27 +615,29 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderMapper, StoreOr
         orderWrapper.eq(StoreOrder::getDeleteFlag, 0);
         List<StoreOrder> orderList = this.list(orderWrapper);
         if (orderList != null && !orderList.isEmpty()) {
-            Date now = new Date();
-            for (StoreOrder order : orderList) {
-                // 删除订单明细(逻辑删除)
+            List<Integer> orderIds = orderList.stream()
+                    .map(StoreOrder::getId)
+                    .collect(Collectors.toList());
+            
+            // 删除订单明细(逻辑删除,使用 MyBatis-Plus 的 deleteBatchIds)
+            for (Integer orderId : orderIds) {
                 LambdaQueryWrapper<StoreOrderDetail> detailWrapper = new LambdaQueryWrapper<>();
-                detailWrapper.eq(StoreOrderDetail::getOrderId, order.getId());
+                detailWrapper.eq(StoreOrderDetail::getOrderId, orderId);
                 detailWrapper.eq(StoreOrderDetail::getDeleteFlag, 0);
                 List<StoreOrderDetail> detailList = orderDetailMapper.selectList(detailWrapper);
                 if (detailList != null && !detailList.isEmpty()) {
-                    for (StoreOrderDetail detail : detailList) {
-                        detail.setDeleteFlag(1);
-                        detail.setUpdatedTime(now);
-                        orderDetailMapper.updateById(detail);
-                    }
-                    log.info("删除订单明细, orderId={}, count={}", order.getId(), detailList.size());
+                    List<Integer> detailIds = detailList.stream()
+                            .map(StoreOrderDetail::getId)
+                            .collect(Collectors.toList());
+                    // 使用 deleteBatchIds 进行逻辑删除(MyBatis-Plus 会自动处理 @TableLogic)
+                    orderDetailMapper.deleteBatchIds(detailIds);
+                    log.info("删除订单明细, orderId={}, count={}", orderId, detailList.size());
                 }
-                
-                // 删除订单(逻辑删除)
-                order.setDeleteFlag(1);
-                order.setUpdatedTime(now);
-                this.updateById(order);
             }
+            
+            // 删除订单(逻辑删除,使用 MyBatis-Plus 的 removeByIds)
+            // 使用 removeByIds 进行逻辑删除(MyBatis-Plus 会自动处理 @TableLogic)
+            this.removeByIds(orderIds);
             log.info("删除订单数据, tableId={}, count={}", tableId, orderList.size());
         }
         
@@ -648,18 +650,20 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderMapper, StoreOr
         cartService.clearCouponUsed(tableId);
         log.info("清除优惠券使用标记, tableId={}", tableId);
         
-        // 5. 重置餐桌表
-        table.setCurrentOrderId(null);
-        table.setCurrentCouponId(null);
-        table.setCartItemCount(0);
-        table.setCartTotalAmount(BigDecimal.ZERO);
-        table.setStatus(0); // 空闲
-        table.setUpdatedTime(new Date());
+        // 5. 重置餐桌表(使用 LambdaUpdateWrapper 来显式设置 null 值)
+        LambdaUpdateWrapper<StoreTable> updateWrapper = new LambdaUpdateWrapper<>();
+        updateWrapper.eq(StoreTable::getId, tableId)
+                .set(StoreTable::getCurrentOrderId, null)  // 显式设置 null
+                .set(StoreTable::getCurrentCouponId, null)  // 显式设置 null
+                .set(StoreTable::getCartItemCount, 0)
+                .set(StoreTable::getCartTotalAmount, BigDecimal.ZERO)
+                .set(StoreTable::getStatus, 0)  // 空闲
+                .set(StoreTable::getUpdatedTime, new Date());
         Integer userId = TokenUtil.getCurrentUserId();
         if (userId != null) {
-            table.setUpdatedUserId(userId);
+            updateWrapper.set(StoreTable::getUpdatedUserId, userId);
         }
-        storeTableMapper.updateById(table);
+        storeTableMapper.update(null, updateWrapper);
         log.info("重置餐桌表完成, tableId={}", tableId);
         
         return true;