feat: 空订单直接删除

This commit is contained in:
张松
2024-11-07 10:44:41 +08:00
parent 896667018a
commit 9d43ce2fc1
5 changed files with 57 additions and 4 deletions

View File

@@ -29,5 +29,12 @@ public interface MpCashierCartService extends IService<TbCashierCart> {
* @param orderId 订单id
*/
boolean updateStateByOrderId(TableConstant.OrderInfo.Status status, Integer orderId);
/**
* 获取购物车信息
* @return 购物车列表
*/
List<TbCashierCart> selectCart(String useType, String masterId, Integer orderId, Integer shopId, TableConstant.OrderInfo.Status... statusList);
}

View File

@@ -31,5 +31,11 @@ public interface MpOrderDetailService extends IService<TbOrderDetail> {
* @return 是否成功
*/
boolean removeByCartIds(List<Integer> cartIds);
/**
* 根据订单id删除详情
* @param orderId 订单id
*/
boolean removeByOrderId(String orderId);
}

View File

@@ -657,8 +657,6 @@ public class OrderService {
List<String> 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<TbCashierCart> 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()) {

View File

@@ -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<MPCashierCartMapper, T
.ne(TbCashierCart::getStatus, TableConstant.Status.RETURN.getValue())
.set(TbCashierCart::getStatus, status.getValue()));
}
@Override
public List<TbCashierCart> selectCart(String useType, String masterId, Integer orderId, Integer shopId, TableConstant.OrderInfo.Status... statusList) {
LambdaQueryWrapper<TbCashierCart> query = new LambdaQueryWrapper<TbCashierCart>()
.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);
}
}

View File

@@ -44,5 +44,11 @@ public class MpOrderDetailServiceImpl extends ServiceImpl<MPOrderDetailMapper, T
return remove(new LambdaQueryWrapper<TbOrderDetail>()
.in(TbOrderDetail::getCartId, cartIds));
}
@Override
public boolean removeByOrderId(String orderId) {
return remove(new LambdaQueryWrapper<TbOrderDetail>()
.eq(TbOrderDetail::getOrderId, orderId));
}
}