代客下单调整

This commit is contained in:
SongZhang 2024-09-26 17:49:07 +08:00
parent efb7e64323
commit 1db4743ac8
2 changed files with 40 additions and 50 deletions

View File

@ -13,4 +13,6 @@ public class ShopEatTypeInfoDTO {
private boolean isDineInBefore;
private TbShopInfo shopInfo;
private String useType;
private Object shopId;
private Object tableId;
}

View File

@ -113,7 +113,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
private final MpShopInfoMapper mpShopInfoMapper;
private final MpOrderDetailService mpOrderDetailService;
private TbOrderInfo getCurrentOrder(ShopEatTypeInfoDTO eatTypeInfoDTO, String tableId, Object shopId) {
private TbOrderInfo getCurrentOrder(ShopEatTypeInfoDTO eatTypeInfoDTO) {
// 获取当前台桌最新订单先付款模式不获取
if (eatTypeInfoDTO.isDineInBefore()) {
return null;
@ -121,13 +121,18 @@ public class TbShopTableServiceImpl implements TbShopTableService {
List<TbOrderInfo> orderInfoList = orderInfoMapper.selectPage(new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(1, 1), new LambdaQueryWrapper<TbOrderInfo>()
.eq(TbOrderInfo::getStatus, "unpaid")
.eq(TbOrderInfo::getUseType, eatTypeInfoDTO.getUseType())
.eq(TbOrderInfo::getShopId, shopId)
.eq(TbOrderInfo::getTableId, tableId)
.eq(TbOrderInfo::getShopId, eatTypeInfoDTO.getShopInfo().getId())
.eq(TbOrderInfo::getTableId, eatTypeInfoDTO.getTableId())
.eq(TbOrderInfo::getTradeDay, DateUtils.getDay())
.orderByDesc(TbOrderInfo::getId)).getRecords();
return orderInfoList.isEmpty() ? null : orderInfoList.get(0);
}
private Integer getCurrentOrderId(ShopEatTypeInfoDTO eatTypeInfoDTO) {
TbOrderInfo currentOrder = getCurrentOrder(eatTypeInfoDTO);
return currentOrder == null ? null : currentOrder.getId();
}
private TbOrderInfo getCurrentOrder(boolean isDineInAfter, String tableId, Object shopId) {
// 获取当前台桌最新订单先付款模式不获取
String currentOrderKey = RedisConstant.getCurrentOrderKey(tableId,
@ -150,12 +155,12 @@ public class TbShopTableServiceImpl implements TbShopTableService {
* @param shopId 店铺id
* @return 就餐类型信息
*/
public ShopEatTypeInfoDTO checkEatModel(Object tableId, Object shopId) {
public ShopEatTypeInfoDTO checkEatModel(Object shopId, Object tableId) {
String eatModel = StrUtil.isBlank(tableId.toString()) ? ShopInfoEatModelEnum.TAKE_OUT.getValue() : ShopInfoEatModelEnum.DINE_IN.getValue();
return getShopEatTypeInfoDTO(shopId, eatModel);
return getShopEatTypeInfoDTO(shopId, eatModel, tableId);
}
private ShopEatTypeInfoDTO getShopEatTypeInfoDTO(Object shopId, String eatModel) {
private ShopEatTypeInfoDTO getShopEatTypeInfoDTO(Object shopId, String eatModel, Object tableId) {
TbShopInfo shopInfo = mpShopInfoMapper.selectOne(new LambdaQueryWrapper<TbShopInfo>()
.eq(TbShopInfo::getId, shopId)
.eq(TbShopInfo::getStatus, 1));
@ -175,15 +180,10 @@ public class TbShopTableServiceImpl implements TbShopTableService {
boolean isDineInBefore = isMunchies && !isTakeout;
return new ShopEatTypeInfoDTO(isTakeout, isMunchies, isDineInAfter, isDineInBefore, shopInfo, isTakeout ? OrderUseTypeEnum.TAKEOUT.getValue() :
isMunchies ? OrderUseTypeEnum.DINE_IN_BEFORE.getValue() : OrderUseTypeEnum.DINE_IN_AFTER.getValue());
isMunchies ? OrderUseTypeEnum.DINE_IN_BEFORE.getValue() : OrderUseTypeEnum.DINE_IN_AFTER.getValue(), shopId, tableId);
}
private ShopEatTypeInfoDTO checkEatModel(Integer shopId, String useType) {
String eatModel = OrderUseTypeEnum.TAKEOUT.getValue().equals(useType) ? ShopInfoEatModelEnum.TAKE_OUT.getValue() : ShopInfoEatModelEnum.DINE_IN.getValue();
return getShopEatTypeInfoDTO(shopId, eatModel);
}
@Override
public Map<String, Object> queryAll(TbShopTableQueryCriteria criteria, Pageable pageable) {
@ -235,8 +235,8 @@ public class TbShopTableServiceImpl implements TbShopTableService {
itemMap.put("tableId", date.getQrcode());
}
String currentOrderId = getCurrentOrderId(date.getQrcode(), date.getShopId().toString());
TbOrderInfo orderInfo = orderInfoMapper.selectById(currentOrderId);
ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(criteria.getShopId(), criteria.getQrcode());
TbOrderInfo orderInfo = getCurrentOrder(shopEatTypeInfoDTO);
itemMap.put("orderId", orderInfo == null ? null : orderInfo.getId());
itemMap.put("useType", orderInfo == null ? null : orderInfo.getUseType());
infoList.add(itemMap);
@ -343,7 +343,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
}
ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(updateCartDTO.getShopId(), tbCashierCart.getUseType());
int currentPlaceNum = getCurrentPlaceNum(tbCashierCart.getTableId().toString(), tbCashierCart.getShopId(), shopEatTypeInfoDTO);
int currentPlaceNum = getCurrentPlaceNum(shopEatTypeInfoDTO);
if (tbCashierCart.getPlaceNum() != null && !tbCashierCart.getPlaceNum().equals(currentPlaceNum)) {
throw new BadRequestException("已下单商品仅支持退单操作");
@ -409,13 +409,11 @@ public class TbShopTableServiceImpl implements TbShopTableService {
/**
* 获取当前台桌当前下单次数
*
* @param tableId 台桌id
* @param shopId 店铺id
* @param shopEatTypeInfoDTO 用餐类型
* @return 对应的次数为order最后次数+1
*/
private int getCurrentPlaceNum(String tableId, Object shopId, ShopEatTypeInfoDTO shopEatTypeInfoDTO) {
TbOrderInfo orderInfo = getCurrentOrder(shopEatTypeInfoDTO, tableId, shopId);
private int getCurrentPlaceNum(ShopEatTypeInfoDTO shopEatTypeInfoDTO) {
TbOrderInfo orderInfo = getCurrentOrder(shopEatTypeInfoDTO);
return orderInfo == null ? 1 : orderInfo.getPlaceNum() + 1;
}
@ -559,9 +557,9 @@ public class TbShopTableServiceImpl implements TbShopTableService {
@Override
public void removeCart(RemoveCartDTO removeCartDTO) {
ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(removeCartDTO.getTableId(), removeCartDTO.getShopId());
ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(removeCartDTO.getShopId(), removeCartDTO.getTableId());
int currentPlaceNum = getCurrentPlaceNum(removeCartDTO.getTableId() == null ? "" : removeCartDTO.getTableId().toString(), removeCartDTO.getShopId().toString(), shopEatTypeInfoDTO);
int currentPlaceNum = getCurrentPlaceNum(shopEatTypeInfoDTO);
// 会员点单
TbCashierCart cashierCart = cashierCartMapper.selectOne(new LambdaQueryWrapper<TbCashierCart>()
.eq(TbCashierCart::getShopId, removeCartDTO.getShopId())
@ -667,11 +665,12 @@ public class TbShopTableServiceImpl implements TbShopTableService {
@Override
public void clearCart(ClearCartDTO clearCartDTO) {
String orderId;
Integer orderId;
ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(clearCartDTO.getShopId(), clearCartDTO.getTableId());
if (clearCartDTO.getTableId() != null) {
orderId = getCurrentOrderId(clearCartDTO.getTableId().toString(), clearCartDTO.getShopId());
orderId = getCurrentOrderId(shopEatTypeInfoDTO);
} else {
orderId = "";
orderId = null;
}
LambdaQueryWrapper<TbCashierCart> query = new LambdaQueryWrapper<TbCashierCart>()
@ -1053,7 +1052,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
// 传递orderId直接取否则取当前缓存id
Integer orderId = shopEatTypeInfoDTO.isDineInAfter() ?
Integer.valueOf(getCurrentOrderId(createOrderDTO.getTableId(), createOrderDTO.getShopId())) : null;
getCurrentOrderId(shopEatTypeInfoDTO) : null;
LambdaQueryWrapper<TbCashierCart> queryWrapper = new LambdaQueryWrapper<TbCashierCart>()
.eq(TbCashierCart::getShopId, createOrderDTO.getShopId())
@ -1113,7 +1112,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
BigDecimal feeAmount = BigDecimal.ZERO;
BigDecimal saleAmount = BigDecimal.ZERO;
// 当前下单次数
int placeNum = getCurrentPlaceNum(createOrderDTO.getTableId(), String.valueOf(createOrderDTO.getShopId()), shopEatTypeInfoDTO);
int placeNum = getCurrentPlaceNum(shopEatTypeInfoDTO);
List<TbOrderDetail> orderDetails = new ArrayList<>();
BigDecimal mealAmount = null;
@ -1624,10 +1623,6 @@ public class TbShopTableServiceImpl implements TbShopTableService {
return cashierCartMapper.update(null, queryWrapper);
}
private String getCurrentOrderId(String tableId, Object shopId) {
String currentOrderKey = RedisConstant.getCurrentOrderKey(tableId, shopId.toString());
return redisTemplate.opsForValue().get(currentOrderKey);
}
private void setCurrentOrderId(String tableId, Object shopId, String orderId) {
String currentOrderKey = RedisConstant.getCurrentOrderKey(tableId, shopId.toString());
@ -1644,8 +1639,6 @@ public class TbShopTableServiceImpl implements TbShopTableService {
@Override
public Object choseTable(ChoseTableDTO choseTableDTO) {
String masterId = getMasterId(choseTableDTO.getShopId(), Long.valueOf(choseTableDTO.getNewTableId()), null).getString("masterId");
String currentOrderId = choseTableDTO.getOrderId() == null ? getCurrentOrderId(choseTableDTO.getOldTableId(),
choseTableDTO.getShopId().toString()) : choseTableDTO.getOrderId().toString();
TbShopTable shopTable = mpShopTableMapper.selectOne(new LambdaQueryWrapper<TbShopTable>()
.eq(TbShopTable::getQrcode, choseTableDTO.getNewTableId())
@ -1654,6 +1647,11 @@ public class TbShopTableServiceImpl implements TbShopTableService {
throw new BadRequestException("台桌不存在或非空闲状态");
}
ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(choseTableDTO.getShopId(), choseTableDTO.getNewTableId());
TbOrderInfo currentOrder = getCurrentOrder(shopEatTypeInfoDTO);
Integer currentOrderId = currentOrder == null ? null : currentOrder.getId();
cashierCartMapper.update(null, new LambdaUpdateWrapper<TbCashierCart>()
.eq(TbCashierCart::getTableId, choseTableDTO.getOldTableId())
.in(TbCashierCart::getStatus, "create", "return")
@ -1748,10 +1746,10 @@ public class TbShopTableServiceImpl implements TbShopTableService {
@Override
public Object printOrder(BaseTableDTO baseTableDTO) {
checkTableState(baseTableDTO.getTableId());
ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(baseTableDTO.getTableId(), baseTableDTO.getTableId());
String currentOrderId = getCurrentOrderId(baseTableDTO.getTableId(), baseTableDTO.getShopId().toString());
if (StrUtil.isBlank(currentOrderId)) {
Integer currentOrderId = getCurrentOrderId(shopEatTypeInfoDTO);
if (currentOrderId == null) {
throw new BadRequestException("当前台桌不存在订单");
}
TbOrderInfo orderInfo = orderInfoMapper.selectById(currentOrderId);
@ -1810,23 +1808,13 @@ public class TbShopTableServiceImpl implements TbShopTableService {
}
return tbShopTable;
}
private TbOrderInfo getCurrentOrder(String tableId, String shopId) {
String currentOrderId = getCurrentOrderId(tableId, shopId);
if (StrUtil.isBlank(currentOrderId)) {
throw new BadRequestException("当前台桌不存在订单");
}
TbOrderInfo orderInfo = orderInfoMapper.selectById(currentOrderId);
if (orderInfo == null) {
throw new BadRequestException("当前台桌不存在订单");
}
return orderInfo;
}
@Override
public Object printDishes(BaseTableDTO baseTableDTO) {
checkTableState(baseTableDTO.getTableId());
TbOrderInfo currentOrder = getCurrentOrder(baseTableDTO.getTableId(), baseTableDTO.getShopId().toString());
ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(baseTableDTO.getShopId(), baseTableDTO.getTableId());
TbOrderInfo currentOrder = getCurrentOrder(shopEatTypeInfoDTO);
if (currentOrder == null) {
throw new BadRequestException("当前台桌不存在订单");
}
List<TbOrderDetail> detailList = orderDetailMapper.selectList(new LambdaQueryWrapper<TbOrderDetail>()
.eq(TbOrderDetail::getOrderId, currentOrder.getId())
.eq(TbOrderDetail::getStatus, "unpaid")