diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/cons/TableConstant.java b/eladmin-system/src/main/java/cn/ysk/cashier/cons/TableConstant.java index 3225bba7..b0d6b858 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/cons/TableConstant.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/cons/TableConstant.java @@ -105,6 +105,9 @@ public interface TableConstant { PayType(String value) { this.value = value; } + public boolean equalsVals(String value) { + return this.value.equals(value); + } } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/CreateOrderDTO.java b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/CreateOrderDTO.java index 558fd8b8..d755fe95 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/CreateOrderDTO.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/CreateOrderDTO.java @@ -29,5 +29,6 @@ public class CreateOrderDTO { private List userCouponInfos = new ArrayList<>(); // 使用的积分抵扣数量 private Integer pointsNum; + private Integer isWaitCall; } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/UpdateCartDTO.java b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/UpdateCartDTO.java index b7db4dfd..a63650ae 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/UpdateCartDTO.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/UpdateCartDTO.java @@ -24,5 +24,7 @@ public class UpdateCartDTO { private Boolean isGift; // 是否打印 private Boolean isPrint; + // 是否等叫 + private Integer isWaitCall; } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/pojo/order/TbCashierCart.java b/eladmin-system/src/main/java/cn/ysk/cashier/pojo/order/TbCashierCart.java index 92d30c9a..249de2a8 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/pojo/order/TbCashierCart.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/pojo/order/TbCashierCart.java @@ -179,6 +179,8 @@ public class TbCashierCart implements Serializable { private String useCouponInfo; // 是否团购券商品 private Integer isThirdCoupon; + // 是否等叫 + private Integer isWaitCall; public void copy(TbCashierCart source) { BeanUtil.copyProperties(source, this, CopyOptions.create().setIgnoreNullValue(true)); diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/pojo/order/TbOrderDetail.java b/eladmin-system/src/main/java/cn/ysk/cashier/pojo/order/TbOrderDetail.java index 5dd2ca24..52eb2a9c 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/pojo/order/TbOrderDetail.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/pojo/order/TbOrderDetail.java @@ -139,6 +139,7 @@ public class TbOrderDetail implements Serializable { private BigDecimal returnAmount; private BigDecimal canReturnAmount; private Integer isThirdCoupon; + private Integer isWaitCall; public void copy(TbOrderDetail source){ BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true)); diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/pojo/order/TbOrderInfo.java b/eladmin-system/src/main/java/cn/ysk/cashier/pojo/order/TbOrderInfo.java index 260e82cd..5b81e87c 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/pojo/order/TbOrderInfo.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/pojo/order/TbOrderInfo.java @@ -252,8 +252,11 @@ public class TbOrderInfo implements Serializable { // 满减抵扣金额 private BigDecimal fullCouponDiscountAmount; private Integer isPostpaid; + private Integer isWaitCall; + private String creditBuyerId; public void copy(TbOrderInfo source){ BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true)); } + } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java index dfad8710..a07e0536 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java @@ -466,6 +466,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { tbCashierCart.setTotalAmount(updateCartDTO.getNum().multiply(tbCashierCart.getSalePrice())); tbCashierCart.setNote(updateCartDTO.getNote()); tbCashierCart.setIsPrint(updateCartDTO.getIsPrint()); + tbCashierCart.setIsWaitCall(updateCartDTO.getIsWaitCall()); if (updateCartDTO.getIsPack() != null) { if (!updateCartDTO.getIsPack()) { @@ -493,6 +494,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { if (tbCashierCart.getOrderId() != null && StrUtil.isNotBlank(updateCartDTO.getNote())) { orderDetailMapper.update(null, new LambdaUpdateWrapper() .eq(TbOrderDetail::getCartId, tbCashierCart.getId()) + .set(TbOrderDetail::getIsWaitCall, updateCartDTO.getIsWaitCall()) .set(TbOrderDetail::getNote, updateCartDTO.getNote())); } @@ -1231,11 +1233,11 @@ public class TbShopTableServiceImpl implements TbShopTableService { // 创建订单详情 OrderPriceDTO detailPriceDTO = createOrderDetailWithCoupon(cartInfoDTO.getCashierCarts(), orderInfo, - createOrderDTO.getShopId(), true, shopEatTypeInfoDTO); + createOrderDTO.getShopId(), true, shopEatTypeInfoDTO, createOrderDTO.getIsWaitCall()); // 是否是第一次创建订单 orderInfo = createOrderWithAction(createOrderDTO, detailPriceDTO, shopEatTypeInfoDTO, - orderInfo, cartInfoDTO.getSeatCart(), shopUser, shopTable); + orderInfo, cartInfoDTO.getSeatCart(), shopUser, shopTable, createOrderDTO.getIsWaitCall()); // 修改订单详情并打票 updateDetailAndPrint(orderInfo, detailPriceDTO, shopEatTypeInfoDTO); @@ -1548,7 +1550,8 @@ public class TbShopTableServiceImpl implements TbShopTableService { * @param updateState * @return */ - private OrderPriceDTO createOrderDetailWithCoupon(List fullCashierCarts, TbOrderInfo orderInfo, Integer shopId, boolean updateState, ShopEatTypeInfoDTO shopEatTypeInfoDTO) { + private OrderPriceDTO createOrderDetailWithCoupon(List fullCashierCarts, TbOrderInfo orderInfo, Integer shopId, + boolean updateState, ShopEatTypeInfoDTO shopEatTypeInfoDTO, Integer isWaitCall) { OrderPriceDTO priceDTO = new OrderPriceDTO(); List cartIds = fullCashierCarts.stream().map(TbCashierCart::getId).collect(Collectors.toList()); @@ -1566,6 +1569,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { }); for (TbCashierCart cashierCart : fullCashierCarts) { + cashierCart.setIsWaitCall(isWaitCall); if (orderInfo != null && shopEatTypeInfoDTO != null) { cashierCart.setIsMember(StrUtil.isBlank(orderInfo.getMemberId()) ? 0 : shopEatTypeInfoDTO.isMemberPrice() ? 1 : 0); } @@ -1605,6 +1609,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { orderDetail.setProductId(Integer.valueOf(cashierCart.getProductId())); } + orderDetail.setIsWaitCall(cashierCart.getIsWaitCall()); orderDetail.setUserCouponId(cashierCart.getUserCouponId()); orderDetail.setMemberPrice(cashierCart.getMemberPrice()); orderDetail.setNote(cashierCart.getNote()); @@ -1634,7 +1639,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { } private TbOrderInfo createOrderWithAction(CreateOrderDTO createOrderDTO, OrderPriceDTO priceDTO, ShopEatTypeInfoDTO eatTypeInfoDTO, - TbOrderInfo orderInfo, TbCashierCart seatCart, TbShopUser shopUser, TbShopTable shopTable) { + TbOrderInfo orderInfo, TbCashierCart seatCart, TbShopUser shopUser, TbShopTable shopTable, Integer isWaitCall) { int placeNum = getCurrentPlaceNum(eatTypeInfoDTO); boolean isFirst = false; // 修改订单信息 @@ -1660,6 +1665,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { orderInfo.setMerchantId(merchantAccount.getId().toString()); orderInfo.setIsPostpaid(eatTypeInfoDTO.isDineInAfter() ? 1 : 0); } + orderInfo.setIsWaitCall(isWaitCall); // 更新取餐号 orderInfo.setOutNumber(updateOutNumber(String.valueOf(createOrderDTO.getShopId())).toString()); orderInfo.setUpdatedAt(System.currentTimeMillis()); @@ -2152,7 +2158,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { // 更新订单信息 ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(orderInfo.getShopId(), orderInfo.getTableId()); - OrderPriceDTO priceDTO = createOrderDetailWithCoupon(activateCartInfo, orderInfo, payDTO.getShopId(), false, shopEatTypeInfoDTO); + OrderPriceDTO priceDTO = createOrderDetailWithCoupon(activateCartInfo, orderInfo, payDTO.getShopId(), false, shopEatTypeInfoDTO, null); BigDecimal finalAmount = priceDTO.getTotalAmount().setScale(2, RoundingMode.HALF_UP); orderInfo.setUpdatedAt(System.currentTimeMillis()); @@ -2288,6 +2294,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { } creditBuyerOrderService.save(payDTO.getCreditBuyerId(), Long.valueOf(orderInfo.getId())); orderInfo.setPayType(TableConstant.OrderInfo.PayType.CREDIT_BUYER.getValue()); + orderInfo.setCreditBuyerId(payDTO.getCreditBuyerId()); break; case "vipPay": if (payDTO.getVipUserId() != null) { @@ -2794,16 +2801,31 @@ public class TbShopTableServiceImpl implements TbShopTableService { detailIds.add(item.getId()); returnNumMap.put(item.getId().toString(), item.getNum()); }); - List detailList = orderDetailMapper.selectList(new LambdaQueryWrapper() - .eq(TbOrderDetail::getShopId, returnOrderDTO.getShopId()) - .eq(TbOrderDetail::getStatus, "closed") - .eq(TbOrderDetail::getOrderId, returnOrderDTO.getOrderId()) - .in(TbOrderDetail::getId, detailIds) - .orderByDesc(TbOrderDetail::getUserCouponId)); - if (detailList.size() != returnOrderDTO.getOrderDetails().size()) { - throw new BadRequestException("订单明细数量不一致"); + + List detailList = null; + if (TableConstant.OrderInfo.PayType.CREDIT_BUYER.equalsVals(oldOrderInfo.getPayType())) { + detailList = orderDetailMapper.selectList(new LambdaQueryWrapper() + .eq(TbOrderDetail::getShopId, returnOrderDTO.getShopId()) + .eq(TbOrderDetail::getStatus, "closed") + .eq(TbOrderDetail::getOrderId, returnOrderDTO.getOrderId()) + .orderByDesc(TbOrderDetail::getUserCouponId)); + + if (detailList.size() != returnOrderDTO.getOrderDetails().size()) { + throw new BadRequestException("挂账退款必须全退"); + } + }else { + detailList = orderDetailMapper.selectList(new LambdaQueryWrapper() + .eq(TbOrderDetail::getShopId, returnOrderDTO.getShopId()) + .eq(TbOrderDetail::getStatus, "closed") + .eq(TbOrderDetail::getOrderId, returnOrderDTO.getOrderId()) + .in(TbOrderDetail::getId, detailIds) + .orderByDesc(TbOrderDetail::getUserCouponId)); + if (detailList.size() != returnOrderDTO.getOrderDetails().size()) { + throw new BadRequestException("订单明细数量不一致"); + } } + HashMap data = new HashMap<>(); BigDecimal returnAmount = BigDecimal.ZERO; BigDecimal packAMount = BigDecimal.ZERO; @@ -3066,6 +3088,8 @@ public class TbShopTableServiceImpl implements TbShopTableService { } else if ("cash".equals(payType)) { mpOrderDetailService.updateStatusByOrderIdAndIds(OrderStatusEnums.REFUNDING, OrderStatusEnums.REFUND, returnOrderDTO.getOrderId(), returnOrderDTO.getOrderDetails().stream().map(ReturnOrderDTO.OrderDetail::getId).collect(Collectors.toList())); + }else if (TableConstant.OrderInfo.PayType.CREDIT_BUYER.equalsVals(payType)) { + creditBuyerOrderService.refund(orderInfo.getCreditBuyerId(), Long.valueOf(orderInfo.getId())); } orderInfo.setStatus(TableConstant.OrderInfo.Status.CLOSED.getValue()); @@ -3080,26 +3104,6 @@ public class TbShopTableServiceImpl implements TbShopTableService { memberPointsService.addPoints(Long.valueOf(orderInfo.getMemberId()), orderInfo.getPointsNum(), "用户退款订单积分返还: " + orderInfo.getPointsNum() + "积分", Long.valueOf(orderInfo.getId())); } -// String couponInfoList = orderInfo.getCouponInfoList(); -// if (StrUtil.isNotBlank(couponInfoList)) { -// OrderInfoCouponInfoDTO orderInfoCouponInfoDTO = JSONObject.parseObject(couponInfoList, OrderInfoCouponInfoDTO.class); -// if (orderInfoCouponInfoDTO.getProductCoupon() != null && !orderInfoCouponInfoDTO.getProductCoupon().isEmpty()) { -// int remainNum = 0; -// for (OrderInfoUserCouponVo item : orderInfoCouponInfoDTO.getProductCoupon()) { -// if (item.getFinalUseNum() > item.getReturnNum()) { -// remainNum = remainNum + (item.getFinalUseNum() - item.getReturnNum()); -// } -// } -// -// if (remainNum == 0) { -// returnCoupon(orderInfo, true); -// // 返还积分 -// memberPointsService.addPoints(Long.valueOf(orderInfo.getMemberId()), orderInfo.getPointsNum(), -// "用户退款订单积分返还: " + orderInfo.getPointsNum() + "积分", Long.valueOf(orderInfo.getId())); -// -// } -// } -// } } orderInfoMapper.updateById(orderInfo); // 打印退款小票