|
|
@@ -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;
|