From 60d3fd0360ee560594a147ad1bc677b70187d83c 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 16:16:43 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E8=B4=AD=E7=89=A9?= =?UTF-8?q?=E8=BD=A6=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashierservice/service/OrderService.java | 184 ++++++++++++------ 1 file changed, 122 insertions(+), 62 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 84262a2..61e382b 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java @@ -246,7 +246,7 @@ public class OrderService { cashierCart.setProGroupInfo(JSONObject.toJSONString(foods)); } - }else if (isFixGroup) { + } else if (isFixGroup) { String groupSnap = product.getGroupSnap(); if (StrUtil.isNotBlank(groupSnap)) { ArrayList foods = new ArrayList<>(); @@ -266,6 +266,7 @@ public class OrderService { } } + @Transactional(rollbackFor = Exception.class) public Result createCart(String masterId, Integer productId, Integer shopId, Integer skuId, BigDecimal number, String userId, String clientType, Integer cartId, String isGift, String isPack, String uuid, @@ -291,7 +292,6 @@ public class OrderService { } } - String finalMasterId = masterId; LambdaQueryWrapper cartQuery = new LambdaQueryWrapper() .eq(TbCashierCart::getShopId, shopId) @@ -304,7 +304,7 @@ public class OrderService { .eq(TbCashierCart::getSkuId, skuId); } - if (cartId != null) { + if (cartId != null) { cartQuery.eq(TbCashierCart::getId, cartId); } @@ -354,13 +354,15 @@ public class OrderService { } } boolean needNew = false; + boolean isGroup = false; List list = cashierCartMapper.selectALlByMasterId(masterId, "create"); TbCashierCart cashierCart = null; - if (type.equals("edit") ) { + if (type.equals("edit")) { cashierCart = getCashierInfo(shopId, skuId, productId, tableId, masterId, shopEatTypeInfoDTO, cartId); - if (cashierCart == null) { + isGroup = cashierCart != null && cashierCart.getGroupType() != null && cashierCart.getGroupType() == 1; + if (cashierCart == null || isGroup) { needNew = true; - }else { + } else { // 校验是否是代客下单往期订单 if (shopEatTypeInfoDTO.isDineInAfter() && cashierCart.getPlaceNum() != null && !isSeatCart) { return Result.fail("后付费已下单订单仅支持退款"); @@ -417,66 +419,123 @@ public class OrderService { } - if (type.equals("add") || needNew){ - cashierCart = new TbCashierCart(); - cashierCart.setUseType(shopEatTypeInfoDTO.getUseType()); - if (product != null) { - cashierCart.setCoverImg(product.getCoverImg()); - cashierCart.setIsSku(product.getTypeEnum()); - cashierCart.setName(product.getName()); - cashierCart.setCategoryId(product.getCategoryId()); - cashierCart.setTypeEnum(product.getTypeEnum()); - cashierCart.setGroupType(product.getGroupType()); - } - cashierCart.setCreatedAt(System.currentTimeMillis()); - cashierCart.setMasterId(masterId); - cashierCart.setUuid(uuid); - cashierCart.setMerchantId(userId); - cashierCart.setProductId(productId == null ? null : productId.toString()); - if (skuWithBLOBs != null) { - cashierCart.setSalePrice(skuWithBLOBs.getSalePrice()); - cashierCart.setSkuId(skuWithBLOBs.getId().toString()); - cashierCart.setSkuName(skuWithBLOBs.getSpecSnap()); - cashierCart.setMemberPrice(skuWithBLOBs.getMemberPrice()); - cashierCart.setIsMember(0); - } - cashierCart.setIsPrint(isPrint); - cashierCart.setShopId(shopId.toString()); - cashierCart.setTradeDay(DateUtils.getDay()); - cashierCart.setStatus("create"); - cashierCart.setIsPack(isPack); - cashierCart.setIsGift(isGift); - if (isGift.equals("false")) { - if (isSeatCart) { - cashierCart.setTotalAmount(number.multiply(cashierCart.getSalePrice())); + if (type.equals("add") || needNew) { + cashierCart = getCashierInfo(shopId, skuId, productId, tableId, masterId, shopEatTypeInfoDTO, cartId); + if (cashierCart != null && !isGroup) { +// 校验是否是代客下单往期订单 + 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); + 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); + } else { + + cashierCart = new TbCashierCart(); + cashierCart.setUseType(shopEatTypeInfoDTO.getUseType()); + if (product != null) { + cashierCart.setCoverImg(product.getCoverImg()); + cashierCart.setIsSku(product.getTypeEnum()); + cashierCart.setName(product.getName()); + cashierCart.setCategoryId(product.getCategoryId()); + cashierCart.setTypeEnum(product.getTypeEnum()); + cashierCart.setGroupType(product.getGroupType()); + } + cashierCart.setCreatedAt(System.currentTimeMillis()); + cashierCart.setMasterId(masterId); + cashierCart.setUuid(uuid); + cashierCart.setMerchantId(userId); + cashierCart.setProductId(productId == null ? null : productId.toString()); + if (skuWithBLOBs != null) { + cashierCart.setSalePrice(skuWithBLOBs.getSalePrice()); + cashierCart.setSkuId(skuWithBLOBs.getId().toString()); + cashierCart.setSkuName(skuWithBLOBs.getSpecSnap()); + cashierCart.setMemberPrice(skuWithBLOBs.getMemberPrice()); + cashierCart.setIsMember(0); + } + cashierCart.setIsPrint(isPrint); + cashierCart.setShopId(shopId.toString()); + cashierCart.setTradeDay(DateUtils.getDay()); + cashierCart.setStatus("create"); + cashierCart.setIsPack(isPack); + cashierCart.setIsGift(isGift); + if (isGift.equals("false")) { + if (isSeatCart) { + cashierCart.setTotalAmount(number.multiply(cashierCart.getSalePrice())); + } else { + cashierCart.setTotalAmount(number.multiply(skuWithBLOBs.getSalePrice())); + } } else { - cashierCart.setTotalAmount(number.multiply(skuWithBLOBs.getSalePrice())); + cashierCart.setTotalAmount(BigDecimal.ZERO); } - } else { - cashierCart.setTotalAmount(BigDecimal.ZERO); - } - if (isPack.equals("false")) { - cashierCart.setPackFee(BigDecimal.ZERO); - } else { - if (!isSeatCart) { - cashierCart.setPackFee(number.multiply(product == null ? BigDecimal.ZERO : product.getPackFee())); + if (isPack.equals("false")) { + cashierCart.setPackFee(BigDecimal.ZERO); + } else { + if (!isSeatCart) { + 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.setNumber(number); + cashierCart.setUserId(Integer.valueOf(userId)); + cashierCart.setUuid(uuid); + cashierCart.setTableId(tableId); + cashierCart.setPlatformType(OrderPlatformTypeEnum.CASH.getValue()); + if (product != null) { + resetGroupProductCart(groupProductIdList, product, cashierCart); + } + list.add(cashierCart); + mpCashierCartMapper.insert(cashierCart); } - 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.setNumber(number); - cashierCart.setUserId(Integer.valueOf(userId)); - cashierCart.setUuid(uuid); - cashierCart.setTableId(tableId); - cashierCart.setPlatformType(OrderPlatformTypeEnum.CASH.getValue()); - if (product != null) { - resetGroupProductCart(groupProductIdList, product, cashierCart); - } - list.add(cashierCart); - mpCashierCartMapper.insert(cashierCart); } @@ -1185,6 +1244,7 @@ public class OrderService { return Result.success(CodeEnum.SUCCESS, orderInfo); } + private void updateOrderDetailCanReturn(List orderDetailList, TbOrderInfo orderInfo) { orderDetailList = orderDetailList.stream().filter(item -> TableConstant.OrderInfo.Status.UNPAID.equalsVals(item.getStatus())).collect(Collectors.toList()); BigDecimal totalAmount = BigDecimal.ZERO;