feat: findOrder数量返回异常修复

This commit is contained in:
张松 2024-12-06 15:40:41 +08:00
parent 1a5b2695d4
commit 293b1acd9e
1 changed files with 78 additions and 75 deletions

View File

@ -308,12 +308,20 @@ public class OrderService {
cartQuery.eq(TbCashierCart::getId, cartId); cartQuery.eq(TbCashierCart::getId, cartId);
} }
TbCashierCart cart = mpCashierCartMapper.selectOne(cartQuery); if (StringUtils.isEmpty(masterId)) {
boolean flag = redisUtil.exists("SHOP:CODE:" + clientType + ":" + shopId);
// 校验是否是代客下单往期订单 if (flag) {
if (shopEatTypeInfoDTO.isDineInAfter() && cart != null && cart.getPlaceNum() != null && !isSeatCart) { String code = redisUtil.getMessage("SHOP:CODE:" + clientType + ":" + shopId);
return Result.fail("后付费已下单订单仅支持退款"); Integer foodCode = Integer.parseInt(code) + 1;
code = "#" + String.format("%03d", foodCode);
redisUtil.saveMessage("SHOP:CODE:" + clientType + ":" + shopId, foodCode.toString());
masterId = code;
} else {
redisUtil.saveMessage("SHOP:CODE:" + clientType + ":" + shopId, "1");
masterId = "#" + String.format("%03d", 1);
} }
}
TbProduct product = null; TbProduct product = null;
TbProductSkuWithBLOBs skuWithBLOBs = null; TbProductSkuWithBLOBs skuWithBLOBs = null;
if (!isSeatCart && productId != null) { if (!isSeatCart && productId != null) {
@ -336,19 +344,37 @@ public class OrderService {
return Result.fail(CodeEnum.PRODUCTSKUERROR); return Result.fail(CodeEnum.PRODUCTSKUERROR);
} }
// 首次加入购物车并且拥有起售数设置为起售数
if (cart == null && skuWithBLOBs.getSuit() != null && skuWithBLOBs.getSuit() != 0 && number.compareTo(BigDecimal.valueOf(skuWithBLOBs.getSuit())) < 0) { // 校验库存
number = BigDecimal.valueOf(skuWithBLOBs.getSuit()); if ("1".equals(product.getIsStock().toString())) {
// 低于起售删除商品 // todo 数量为浮点数库存目前整数, 待同一
} else if (cart != null && skuWithBLOBs.getSuit() != null && skuWithBLOBs.getSuit() != 0 && number.compareTo(BigDecimal.valueOf(skuWithBLOBs.getSuit())) < 0) { if (product.getStockNumber() - number.intValue() < 0) {
return Result.fail(CodeEnum.STOCKERROR);
}
}
}
boolean needNew = false;
List<TbCashierCart> list = cashierCartMapper.selectALlByMasterId(masterId, "create");
TbCashierCart cashierCart = null;
if (type.equals("edit") ) {
cashierCart = getCashierInfo(shopId, skuId, productId, tableId, masterId, shopEatTypeInfoDTO, cartId);
if (cashierCart == null) {
needNew = true;
}else {
// 校验是否是代客下单往期订单
if (shopEatTypeInfoDTO.isDineInAfter() && cashierCart.getPlaceNum() != null && !isSeatCart) {
return Result.fail("后付费已下单订单仅支持退款");
}
if (skuWithBLOBs != null && skuWithBLOBs.getSuit() != null && skuWithBLOBs.getSuit() != 0 && number.compareTo(BigDecimal.valueOf(skuWithBLOBs.getSuit())) < 0) {
delCart(masterId, cartId); delCart(masterId, cartId);
if (cart.getOrderId() != null && StrUtil.isNotBlank(cart.getTableId())) { if (cashierCart.getOrderId() != null && StrUtil.isNotBlank(cashierCart.getTableId())) {
LambdaQueryWrapper<TbCashierCart> queryWrapper = new LambdaQueryWrapper<TbCashierCart>() LambdaQueryWrapper<TbCashierCart> queryWrapper = new LambdaQueryWrapper<TbCashierCart>()
.notIn(TbCashierCart::getStatus, "final", "refund", "closed", "pending") .notIn(TbCashierCart::getStatus, "final", "refund", "closed", "pending")
.eq(TbCashierCart::getShopId, cart.getShopId()); .eq(TbCashierCart::getShopId, cashierCart.getShopId());
TbCashierCart finalCart = cart; TbCashierCart finalCart = cashierCart;
queryWrapper.eq(TbCashierCart::getTableId, cart.getTableId()) queryWrapper.eq(TbCashierCart::getTableId, cashierCart.getTableId())
.and(q -> q.or( .and(q -> q.or(
query -> query.eq(TbCashierCart::getMasterId, finalCart.getMasterId()) query -> query.eq(TbCashierCart::getMasterId, finalCart.getMasterId())
.or() .or()
@ -360,45 +386,17 @@ public class OrderService {
.or() .or()
.isNull(TbCashierCart::getOrderId))); .isNull(TbCashierCart::getOrderId)));
List<TbCashierCart> list = mpCashierCartMapper.selectList(queryWrapper.eq(TbCashierCart::getStatus, "create")); List<TbCashierCart> list1 = mpCashierCartMapper.selectList(queryWrapper.eq(TbCashierCart::getStatus, "create"));
if (list.isEmpty()) { if (list1.isEmpty()) {
tbOrderInfoMapper.deleteByPrimaryKey(Integer.valueOf(cart.getOrderId())); tbOrderInfoMapper.deleteByPrimaryKey(cashierCart.getOrderId());
} }
} }
setRedisTableCartInfo(tableId, shopId, Collections.singletonList(cart), false); setRedisTableCartInfo(tableId, shopId, Collections.singletonList(cashierCart), false);
return Result.success(CodeEnum.SUCCESS, masterId); return Result.success(CodeEnum.SUCCESS, masterId);
} }
// 校验库存
if ("1".equals(product.getIsStock().toString())) {
// todo 数量为浮点数库存目前整数, 待同一
if (product.getStockNumber() - number.intValue() < 0) {
return Result.fail(CodeEnum.STOCKERROR);
}
}
}
if (StringUtils.isEmpty(masterId)) {
boolean flag = redisUtil.exists("SHOP:CODE:" + clientType + ":" + shopId);
if (flag) {
String code = redisUtil.getMessage("SHOP:CODE:" + clientType + ":" + shopId);
Integer foodCode = Integer.parseInt(code) + 1;
code = "#" + String.format("%03d", foodCode);
redisUtil.saveMessage("SHOP:CODE:" + clientType + ":" + shopId, foodCode.toString());
masterId = code;
} else {
redisUtil.saveMessage("SHOP:CODE:" + clientType + ":" + shopId, "1");
masterId = "#" + String.format("%03d", 1);
}
}
List<TbCashierCart> list = cashierCartMapper.selectALlByMasterId(masterId, "create");
TbCashierCart cashierCart = getCashierInfo(shopId, skuId, productId, tableId, masterId, shopEatTypeInfoDTO, cartId);
if (type.equals("edit") && cashierCart!= null) {
cashierCart.setNumber(number); cashierCart.setNumber(number);
if (product != null) { if (product != null) {
resetGroupProductCart(groupProductIdList, product, cashierCart); resetGroupProductCart(groupProductIdList, product, cashierCart);
@ -410,13 +408,16 @@ public class OrderService {
cashierCart.setUuid(uuid); cashierCart.setUuid(uuid);
cashierCart.setIsPrint(isPrint); cashierCart.setIsPrint(isPrint);
cashierCart.resetTotalAmount(); cashierCart.resetTotalAmount();
cart = cashierCart;
if (product != null) { if (product != null) {
resetGroupProductCart(groupProductIdList, product, cashierCart); resetGroupProductCart(groupProductIdList, product, cashierCart);
} }
mpCashierCartMapper.updateById(cashierCart); mpCashierCartMapper.updateById(cashierCart);
}else { }
}
if (type.equals("add") || needNew){
cashierCart = new TbCashierCart(); cashierCart = new TbCashierCart();
cashierCart.setUseType(shopEatTypeInfoDTO.getUseType()); cashierCart.setUseType(shopEatTypeInfoDTO.getUseType());
if (product != null) { if (product != null) {
@ -461,11 +462,13 @@ public class OrderService {
cashierCart.setPackFee(number.multiply(product == null ? BigDecimal.ZERO : product.getPackFee())); cashierCart.setPackFee(number.multiply(product == null ? BigDecimal.ZERO : product.getPackFee()));
} }
cashierCart.setTotalAmount(cashierCart.getTotalAmount().add(cashierCart.getPackFee())); cashierCart.setTotalAmount(cashierCart.getTotalAmount().add(cashierCart.getPackFee()));
}
if (skuWithBLOBs != null && skuWithBLOBs.getSuit() != null && skuWithBLOBs.getSuit() != 0 && number.compareTo(BigDecimal.valueOf(skuWithBLOBs.getSuit())) < 0) {
number = BigDecimal.valueOf(skuWithBLOBs.getSuit());
} }
cashierCart.setTotalNumber(number); cashierCart.setTotalNumber(number);
cashierCart.setUserId(Integer.valueOf(userId));
cashierCart.setNumber(number); cashierCart.setNumber(number);
cashierCart.setUserId(Integer.valueOf(userId));
cashierCart.setUuid(uuid); cashierCart.setUuid(uuid);
cashierCart.setTableId(tableId); cashierCart.setTableId(tableId);
cashierCart.setPlatformType(OrderPlatformTypeEnum.CASH.getValue()); cashierCart.setPlatformType(OrderPlatformTypeEnum.CASH.getValue());