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));
}
}else if (isFixGroup) {
} else if (isFixGroup) {
String groupSnap = product.getGroupSnap();
if (StrUtil.isNotBlank(groupSnap)) {
ArrayList<ProductGroupVo.Food> 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<TbCashierCart> cartQuery = new LambdaQueryWrapper<TbCashierCart>()
.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<TbCashierCart> 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<TbCashierCart> queryWrapper = new LambdaQueryWrapper<TbCashierCart>()
.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<TbCashierCart> 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<TbOrderDetail> orderDetailList, TbOrderInfo orderInfo) {
orderDetailList = orderDetailList.stream().filter(item -> TableConstant.OrderInfo.Status.UNPAID.equalsVals(item.getStatus())).collect(Collectors.toList());
BigDecimal totalAmount = BigDecimal.ZERO;