diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/MpCashierCartService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/MpCashierCartService.java index 6d80520..6b2d24c 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/MpCashierCartService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/MpCashierCartService.java @@ -29,5 +29,12 @@ public interface MpCashierCartService extends IService { * @param orderId 订单id */ boolean updateStateByOrderId(TableConstant.OrderInfo.Status status, Integer orderId); + + /** + * 获取购物车信息 + * @return 购物车列表 + */ + List selectCart(String useType, String masterId, Integer orderId, Integer shopId, TableConstant.OrderInfo.Status... statusList); + } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/MpOrderDetailService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/MpOrderDetailService.java index e24df73..a415f24 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/MpOrderDetailService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/MpOrderDetailService.java @@ -31,5 +31,11 @@ public interface MpOrderDetailService extends IService { * @return 是否成功 */ boolean removeByCartIds(List cartIds); + + /** + * 根据订单id删除详情 + * @param orderId 订单id + */ + boolean removeByOrderId(String orderId); } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java index 6867980..fe7280a 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java @@ -657,8 +657,6 @@ public class OrderService { List skuIds = new ArrayList<>(); skuIds.add(cashierCart.getSkuId()); - - cashierCartMapper.deleteByPrimaryKey(cartId); if (StrUtil.isNotBlank(cashierCart.getOrderId()) && StrUtil.isNotBlank(cashierCart.getTableId())) { @@ -689,10 +687,10 @@ public class OrderService { tbOrderInfoMapper.deleteByPrimaryKey(Integer.valueOf(cashierCart.getOrderId())); }); } - - } + checkTakeOutEmptyAndClear(cashierCart); + if (StrUtil.isNotBlank(cashierCart.getTableId())) { setRedisTableCartInfo(cashierCart.getTableId(), cashierCart.getShopId(), Collections.singletonList(cashierCart), false); } @@ -701,6 +699,20 @@ public class OrderService { return Result.success(CodeEnum.SUCCESS); } + /** + * 检查订单购物车是否为空并删除订单 + */ + private void checkTakeOutEmptyAndClear(TbCashierCart cashierCart) { + if (!TableConstant.OrderInfo.UseType.TAKEOUT.equalsVals(cashierCart.getUseType())) { + return; + } + List cashierCarts = mpCashierCartService.selectCart(cashierCart.getUseType(), cashierCart.getMasterId(), Integer.valueOf(cashierCart.getOrderId()), Integer.valueOf(cashierCart.getShopId())); + if (cashierCarts.isEmpty() && cashierCart.getOrderId() != null) { + mpOrderDetailService.removeByOrderId(cashierCart.getOrderId()); + mpOrderInfoService.removeById(cashierCart.getOrderId()); + } + } + private TbOrderInfo getCurrentOrder(ShopEatTypeInfoDTO eatTypeInfoDTO, String tableId, Object shopId) { // 获取当前台桌最新订单,先付款模式不获取 if (eatTypeInfoDTO.isDineInBefore() || eatTypeInfoDTO.isTakeout()) { diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/MpCashierCartServiceImpl.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/MpCashierCartServiceImpl.java index ba85458..3526584 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/MpCashierCartServiceImpl.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/MpCashierCartServiceImpl.java @@ -1,5 +1,9 @@ package com.chaozhanggui.system.cashierservice.service.impl; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ArrayUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.chaozhanggui.system.cashierservice.bean.constant.TableConstant; @@ -11,6 +15,7 @@ import com.chaozhanggui.system.cashierservice.service.MpCashierCartService; import com.chaozhanggui.system.cashierservice.service.MpOrderDetailService; import org.springframework.stereotype.Service; +import java.util.Collections; import java.util.List; /** @@ -37,5 +42,22 @@ public class MpCashierCartServiceImpl extends ServiceImpl selectCart(String useType, String masterId, Integer orderId, Integer shopId, TableConstant.OrderInfo.Status... statusList) { + LambdaQueryWrapper query = new LambdaQueryWrapper() + .eq(TbCashierCart::getShopId, shopId) + .eq(TbCashierCart::getUseType, useType) + .eq(TbCashierCart::getMasterId, masterId) + .gt(TbCashierCart::getCreatedAt, DateUtil.offsetDay(DateUtil.date(), -1).getTime()); + if (orderId != null) { + query.and(q -> q.eq(TbCashierCart::getOrderId, orderId).or().isNull(TbCashierCart::getOrderId)); + } + + if (statusList.length != 0) { + query.in(TbCashierCart::getStatus, Convert.toList(statusList)); + } + return list(query); + } } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/MpOrderDetailServiceImpl.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/MpOrderDetailServiceImpl.java index a3cd624..be5b03c 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/MpOrderDetailServiceImpl.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/MpOrderDetailServiceImpl.java @@ -44,5 +44,11 @@ public class MpOrderDetailServiceImpl extends ServiceImpl() .in(TbOrderDetail::getCartId, cartIds)); } + + @Override + public boolean removeByOrderId(String orderId) { + return remove(new LambdaQueryWrapper() + .eq(TbOrderDetail::getOrderId, orderId)); + } }