feat: 添加购物车修改

This commit is contained in:
张松
2024-12-06 16:16:43 +08:00
parent 8332589647
commit 60d3fd0360

View File

@@ -246,7 +246,7 @@ public class OrderService {
cashierCart.setProGroupInfo(JSONObject.toJSONString(foods)); cashierCart.setProGroupInfo(JSONObject.toJSONString(foods));
} }
}else if (isFixGroup) { } else if (isFixGroup) {
String groupSnap = product.getGroupSnap(); String groupSnap = product.getGroupSnap();
if (StrUtil.isNotBlank(groupSnap)) { if (StrUtil.isNotBlank(groupSnap)) {
ArrayList<ProductGroupVo.Food> foods = new ArrayList<>(); ArrayList<ProductGroupVo.Food> foods = new ArrayList<>();
@@ -266,6 +266,7 @@ public class OrderService {
} }
} }
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result createCart(String masterId, Integer productId, Integer shopId, Integer skuId, BigDecimal number, 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, String userId, String clientType, Integer cartId, String isGift, String isPack, String uuid,
@@ -291,7 +292,6 @@ public class OrderService {
} }
} }
String finalMasterId = masterId; String finalMasterId = masterId;
LambdaQueryWrapper<TbCashierCart> cartQuery = new LambdaQueryWrapper<TbCashierCart>() LambdaQueryWrapper<TbCashierCart> cartQuery = new LambdaQueryWrapper<TbCashierCart>()
.eq(TbCashierCart::getShopId, shopId) .eq(TbCashierCart::getShopId, shopId)
@@ -304,7 +304,7 @@ public class OrderService {
.eq(TbCashierCart::getSkuId, skuId); .eq(TbCashierCart::getSkuId, skuId);
} }
if (cartId != null) { if (cartId != null) {
cartQuery.eq(TbCashierCart::getId, cartId); cartQuery.eq(TbCashierCart::getId, cartId);
} }
@@ -354,13 +354,15 @@ public class OrderService {
} }
} }
boolean needNew = false; boolean needNew = false;
boolean isGroup = false;
List<TbCashierCart> list = cashierCartMapper.selectALlByMasterId(masterId, "create"); List<TbCashierCart> list = cashierCartMapper.selectALlByMasterId(masterId, "create");
TbCashierCart cashierCart = null; TbCashierCart cashierCart = null;
if (type.equals("edit") ) { if (type.equals("edit")) {
cashierCart = getCashierInfo(shopId, skuId, productId, tableId, masterId, shopEatTypeInfoDTO, cartId); 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; needNew = true;
}else { } else {
// 校验是否是代客下单往期订单 // 校验是否是代客下单往期订单
if (shopEatTypeInfoDTO.isDineInAfter() && cashierCart.getPlaceNum() != null && !isSeatCart) { if (shopEatTypeInfoDTO.isDineInAfter() && cashierCart.getPlaceNum() != null && !isSeatCart) {
return Result.fail("后付费已下单订单仅支持退款"); return Result.fail("后付费已下单订单仅支持退款");
@@ -417,66 +419,123 @@ public class OrderService {
} }
if (type.equals("add") || needNew){ if (type.equals("add") || needNew) {
cashierCart = new TbCashierCart(); cashierCart = getCashierInfo(shopId, skuId, productId, tableId, masterId, shopEatTypeInfoDTO, cartId);
cashierCart.setUseType(shopEatTypeInfoDTO.getUseType()); if (cashierCart != null && !isGroup) {
if (product != null) { // 校验是否是代客下单往期订单
cashierCart.setCoverImg(product.getCoverImg()); if (shopEatTypeInfoDTO.isDineInAfter() && cashierCart.getPlaceNum() != null && !isSeatCart) {
cashierCart.setIsSku(product.getTypeEnum()); return Result.fail("后付费已下单订单仅支持退款");
cashierCart.setName(product.getName()); }
cashierCart.setCategoryId(product.getCategoryId());
cashierCart.setTypeEnum(product.getTypeEnum()); if (skuWithBLOBs != null && skuWithBLOBs.getSuit() != null && skuWithBLOBs.getSuit() != 0 && number.compareTo(BigDecimal.valueOf(skuWithBLOBs.getSuit())) < 0) {
cashierCart.setGroupType(product.getGroupType()); delCart(masterId, cartId);
} if (cashierCart.getOrderId() != null && StrUtil.isNotBlank(cashierCart.getTableId())) {
cashierCart.setCreatedAt(System.currentTimeMillis()); LambdaQueryWrapper<TbCashierCart> queryWrapper = new LambdaQueryWrapper<TbCashierCart>()
cashierCart.setMasterId(masterId); .notIn(TbCashierCart::getStatus, "final", "refund", "closed", "pending")
cashierCart.setUuid(uuid); .eq(TbCashierCart::getShopId, cashierCart.getShopId());
cashierCart.setMerchantId(userId);
cashierCart.setProductId(productId == null ? null : productId.toString()); TbCashierCart finalCart = cashierCart;
if (skuWithBLOBs != null) { queryWrapper.eq(TbCashierCart::getTableId, cashierCart.getTableId())
cashierCart.setSalePrice(skuWithBLOBs.getSalePrice()); .and(q -> q.or(
cashierCart.setSkuId(skuWithBLOBs.getId().toString()); query -> query.eq(TbCashierCart::getMasterId, finalCart.getMasterId())
cashierCart.setSkuName(skuWithBLOBs.getSpecSnap()); .or()
cashierCart.setMemberPrice(skuWithBLOBs.getMemberPrice()); .isNull(TbCashierCart::getMasterId)
cashierCart.setIsMember(0); .or()
} .eq(TbCashierCart::getMasterId, "")
cashierCart.setIsPrint(isPrint); )
cashierCart.setShopId(shopId.toString()); .or(query -> query.eq(TbCashierCart::getOrderId, finalCart.getOrderId())
cashierCart.setTradeDay(DateUtils.getDay()); .or()
cashierCart.setStatus("create"); .isNull(TbCashierCart::getOrderId)));
cashierCart.setIsPack(isPack);
cashierCart.setIsGift(isGift); List<TbCashierCart> list1 = mpCashierCartMapper.selectList(queryWrapper.eq(TbCashierCart::getStatus, "create"));
if (isGift.equals("false")) {
if (isSeatCart) { if (list1.isEmpty()) {
cashierCart.setTotalAmount(number.multiply(cashierCart.getSalePrice())); 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 { } else {
cashierCart.setTotalAmount(number.multiply(skuWithBLOBs.getSalePrice())); cashierCart.setTotalAmount(BigDecimal.ZERO);
} }
} else { if (isPack.equals("false")) {
cashierCart.setTotalAmount(BigDecimal.ZERO); cashierCart.setPackFee(BigDecimal.ZERO);
} } else {
if (isPack.equals("false")) { if (!isSeatCart) {
cashierCart.setPackFee(BigDecimal.ZERO); cashierCart.setPackFee(number.multiply(product == null ? BigDecimal.ZERO : product.getPackFee()));
} else { }
if (!isSeatCart) { cashierCart.setTotalAmount(cashierCart.getTotalAmount().add(cashierCart.getPackFee()));
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.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); return Result.success(CodeEnum.SUCCESS, orderInfo);
} }
private void updateOrderDetailCanReturn(List<TbOrderDetail> orderDetailList, TbOrderInfo orderInfo) { private void updateOrderDetailCanReturn(List<TbOrderDetail> orderDetailList, TbOrderInfo orderInfo) {
orderDetailList = orderDetailList.stream().filter(item -> TableConstant.OrderInfo.Status.UNPAID.equalsVals(item.getStatus())).collect(Collectors.toList()); orderDetailList = orderDetailList.stream().filter(item -> TableConstant.OrderInfo.Status.UNPAID.equalsVals(item.getStatus())).collect(Collectors.toList());
BigDecimal totalAmount = BigDecimal.ZERO; BigDecimal totalAmount = BigDecimal.ZERO;