From 293b1acd9eb216391822b428fa52d4d06d01497b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Fri, 6 Dec 2024 15:40:41 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20findOrder=E6=95=B0=E9=87=8F=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E5=BC=82=E5=B8=B8=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashierservice/service/OrderService.java | 153 +++++++++--------- 1 file changed, 78 insertions(+), 75 deletions(-) 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 16d3ac7..0964b74 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java @@ -308,12 +308,20 @@ public class OrderService { cartQuery.eq(TbCashierCart::getId, cartId); } - TbCashierCart cart = mpCashierCartMapper.selectOne(cartQuery); - - // 校验是否是代客下单往期订单 - if (shopEatTypeInfoDTO.isDineInAfter() && cart != null && cart.getPlaceNum() != null && !isSeatCart) { - return Result.fail("后付费已下单订单仅支持退款"); + 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); + } } + TbProduct product = null; TbProductSkuWithBLOBs skuWithBLOBs = null; if (!isSeatCart && productId != null) { @@ -336,40 +344,6 @@ public class OrderService { 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()); - // 低于起售,删除商品 - } else if (cart != null && skuWithBLOBs.getSuit() != null && skuWithBLOBs.getSuit() != 0 && number.compareTo(BigDecimal.valueOf(skuWithBLOBs.getSuit())) < 0) { - delCart(masterId, cartId); - if (cart.getOrderId() != null && StrUtil.isNotBlank(cart.getTableId())) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() - .notIn(TbCashierCart::getStatus, "final", "refund", "closed", "pending") - .eq(TbCashierCart::getShopId, cart.getShopId()); - - TbCashierCart finalCart = cart; - queryWrapper.eq(TbCashierCart::getTableId, cart.getTableId()) - .and(q -> q.or( - query -> query.eq(TbCashierCart::getMasterId, finalCart.getMasterId()) - .or() - .isNull(TbCashierCart::getMasterId) - .or() - .eq(TbCashierCart::getMasterId, "") - ) - .or(query -> query.eq(TbCashierCart::getOrderId, finalCart.getOrderId()) - .or() - .isNull(TbCashierCart::getOrderId))); - - List list = mpCashierCartMapper.selectList(queryWrapper.eq(TbCashierCart::getStatus, "create")); - - if (list.isEmpty()) { - tbOrderInfoMapper.deleteByPrimaryKey(Integer.valueOf(cart.getOrderId())); - } - } - - setRedisTableCartInfo(tableId, shopId, Collections.singletonList(cart), false); - return Result.success(CodeEnum.SUCCESS, masterId); - } // 校验库存 if ("1".equals(product.getIsStock().toString())) { @@ -379,44 +353,71 @@ public class OrderService { } } } + boolean needNew = false; + List 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 (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); + if (skuWithBLOBs != null && skuWithBLOBs.getSuit() != null && skuWithBLOBs.getSuit() != 0 && number.compareTo(BigDecimal.valueOf(skuWithBLOBs.getSuit())) < 0) { + delCart(masterId, cartId); + if (cashierCart.getOrderId() != null && StrUtil.isNotBlank(cashierCart.getTableId())) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() + .notIn(TbCashierCart::getStatus, "final", "refund", "closed", "pending") + .eq(TbCashierCart::getShopId, cashierCart.getShopId()); + + TbCashierCart finalCart = cashierCart; + queryWrapper.eq(TbCashierCart::getTableId, cashierCart.getTableId()) + .and(q -> q.or( + query -> query.eq(TbCashierCart::getMasterId, finalCart.getMasterId()) + .or() + .isNull(TbCashierCart::getMasterId) + .or() + .eq(TbCashierCart::getMasterId, "") + ) + .or(query -> query.eq(TbCashierCart::getOrderId, finalCart.getOrderId()) + .or() + .isNull(TbCashierCart::getOrderId))); + + List list1 = mpCashierCartMapper.selectList(queryWrapper.eq(TbCashierCart::getStatus, "create")); + + if (list1.isEmpty()) { + tbOrderInfoMapper.deleteByPrimaryKey(cashierCart.getOrderId()); + } + } + + setRedisTableCartInfo(tableId, shopId, Collections.singletonList(cashierCart), false); + return Result.success(CodeEnum.SUCCESS, masterId); + } + + cashierCart.setNumber(number); + if (product != null) { + resetGroupProductCart(groupProductIdList, product, cashierCart); + } + cashierCart.setTotalNumber(number); + cashierCart.setIsPrint(isPrint); + cashierCart.setIsPack(isPack); + cashierCart.resetTotalAmount(); + cashierCart.setUuid(uuid); + cashierCart.setIsPrint(isPrint); + cashierCart.resetTotalAmount(); + if (product != null) { + resetGroupProductCart(groupProductIdList, product, cashierCart); + } + + mpCashierCartMapper.updateById(cashierCart); } + } - - List list = cashierCartMapper.selectALlByMasterId(masterId, "create"); - - TbCashierCart cashierCart = getCashierInfo(shopId, skuId, productId, tableId, masterId, shopEatTypeInfoDTO, cartId); - if (type.equals("edit") && cashierCart!= null) { - cashierCart.setNumber(number); - if (product != null) { - resetGroupProductCart(groupProductIdList, product, cashierCart); - } - cashierCart.setTotalNumber(number); - cashierCart.setIsPrint(isPrint); - cashierCart.setIsPack(isPack); - cashierCart.resetTotalAmount(); - cashierCart.setUuid(uuid); - cashierCart.setIsPrint(isPrint); - cashierCart.resetTotalAmount(); - cart = cashierCart; - if (product != null) { - resetGroupProductCart(groupProductIdList, product, cashierCart); - } - - mpCashierCartMapper.updateById(cashierCart); - }else { + if (type.equals("add") || needNew){ cashierCart = new TbCashierCart(); cashierCart.setUseType(shopEatTypeInfoDTO.getUseType()); if (product != null) { @@ -461,11 +462,13 @@ public class OrderService { cashierCart.setPackFee(number.multiply(product == null ? BigDecimal.ZERO : product.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.setUserId(Integer.valueOf(userId)); cashierCart.setNumber(number); + cashierCart.setUserId(Integer.valueOf(userId)); cashierCart.setUuid(uuid); cashierCart.setTableId(tableId); cashierCart.setPlatformType(OrderPlatformTypeEnum.CASH.getValue());