Commit e61e58e2 by 周晓航

修改套餐扣除逻辑

parent ea25c9d4
......@@ -1976,12 +1976,15 @@ public class OrderSdkAdapter {
}
// 需要处理 过滤出 可选搭配
if (CollectionUtils.isNotEmpty(product.getComboProduct())) {
product.getComboProduct().stream().filter(c -> !c.getIsFixedProduct()).forEach(groupProduct -> {
if (groupProduct.getHasStockProudct() != null && groupProduct.getHasStockProudct()) {
UpdateProductStockRequestDto.ProductStock productStocksVO = this.getProductStockVo(groupProduct);
productStocks.add(productStocksVO);
}
});
if (product.getStockMode().compareTo(2) == 0) {
product.getComboProduct().stream().filter(c -> !c.getIsFixedProduct()).forEach(groupProduct -> {
if (groupProduct.getHasStockProudct() != null && groupProduct.getHasStockProudct()) {
UpdateProductStockRequestDto.ProductStock productStocksVO = this.getProductStockVo(groupProduct);
productStocks.add(productStocksVO);
}
});
}
}
} else {
if (product.getHasStockProudct() != null && product.getHasStockProudct()) {
......
......@@ -21,6 +21,13 @@ import java.util.List;
@Data
public class CreateOrderProductRequest extends BaseConfig {
/**
* 库存模式,目前该模式只针对套餐商品会起作用
* 1-使用套餐库存(非关联模式):即套餐库存和套餐中子商品品库存分别存在、互不影响
* 2-使用联动库存(关联模式):即套餐商品的库存为套餐库存和套餐中子商品的库存,当用户购买套餐商品时,同时扣减套餐库存和套餐中子商品的库存,当套餐中任一子商品库存为0或套餐商品的库存为0时,该套餐将不能购买
*/
protected Integer stockMode = 1;
/**
* 商品
*/
private String productId;
......
......@@ -2529,6 +2529,7 @@ public class OrderAdapter {
createOrderProductDemoDto.setCustomerCode(cartGoodsDetailDto.getCustomerCode());
createOrderProductDemoDto.setProductCode(cartGoodsDetailDto.getProductCode());
createOrderProductDemoDto.setHasStockProudct(cartGoodsDetailDto.isStockLimit());
createOrderProductDemoDto.setStockMode(cartGoodsDetailDto.getStockMode());
createOrderProductDemoDto.setWeight(cartGoodsDetailDto.getWeight());
createOrderProductDemoDto.setUnit(cartGoodsDetailDto.getUnit());
createOrderProductDemoDto.setStapleFood(0);
......
......@@ -133,6 +133,13 @@ public class ShoppingCartGoodsDto {
private String spuId;
/**
* 库存模式,目前该模式只针对套餐商品会起作用
* 1-使用套餐库存:即套餐库存和套餐中子商品品库存分别存在、互不影响
* 2-使用联动库存:即套餐商品的库存为套餐库存和套餐中子商品的库存,当用户购买套餐商品时,同时扣减套餐库存和套餐中子商品的库存,当套餐中任一子商品库存为0或套餐商品的库存为0时,该套餐将不能购买
*/
protected Integer stockMode = 1;
/**
* 原有商品类型
*
* 溯源: 订单有自己的商品逻辑 无法使用原有字段类型记录处理
......
......@@ -758,27 +758,6 @@ public class CheckOrder {
.build();
shoppingCartInfoRequestVo.setTrackingNo(LogThreadLocal.getTrackingNo());
shoppingCartInfoRequestVo.setEnableSharing(createOrderVo.getEnableSharing());
// 如果使用优惠券或者商品券,校验 couponCode
// if (StringUtils.isNotBlank(createOrderVo.getCouponCode())) {
// // 校验couponCode
// GetCouponDetailResponseDto getCouponDetailResponseDto = couponService.getMemberCoupon(GetMemberCouponRequestVo.builder()
// .partnerId(createOrderVo.getPartnerId())
// .couponCode(createOrderVo.getCouponCode()).build());
// if (Objects.equals(getCouponDetailResponseDto, null) || CollectionUtils.isEmpty(getCouponDetailResponseDto.getDetails())
// || getCouponDetailResponseDto.getDetails().get(0).getActive() == null
// || getCouponDetailResponseDto.getDetails().get(0).getActive().getActiveCode() == null) {
// // 返回信息为空
// throw new ServiceException(ResponseResult.COUPON_GETINFO_INVAILD);
// }
// List<GetCouponDetailResponseDto.ActiveRedeemTimeInterval> activeRedeemTimeIntervalList = getCouponDetailResponseDto.getDetails().get(0).getActiveRedeemTimeIntervalList();
// checkCouonRedeemTime(activeRedeemTimeIntervalList);
// String activeCode = getCouponDetailResponseDto.getDetails().get(0).getActive().getActiveCode();
// // 校验点餐方式,查询购物车接口内部已校验
// shoppingCartInfoRequestVo.setCouponCode(createOrderVo.getCouponCode());
// // 活动code
// shoppingCartInfoRequestVo.setActivityCode(activeCode);
// shoppingCartInfoRequestVo.setCardCode(createOrderVo.getCardCode());
// }
Set<String> codes = new HashSet<>();
if (StringUtils.isNotBlank(createOrderVo.getCouponCode())) {
......
......@@ -682,6 +682,7 @@ public class ShoppingCartConvertAdapter {
cartGoods.setPic(spuProduct.getPicture());
cartGoods.setPackPrice(isSkuProduct ? skuProduct.getPackPrice() : spuProduct.getPackPrice());
cartGoods.setStockLimit(isSkuProduct ? ObjectUtils.equals(1, skuProduct.getStockLimit()) : ObjectUtils.equals(1, spuProduct.getStockLimit()));
cartGoods.setStockMode(spuProduct.getStockMode());
cartGoods.setCustomerCode(isSkuProduct ? skuProduct.getCustomerCode() : spuProduct.getCustomerCode());
cartGoods.setRiseSell(isSkuProduct ? skuProduct.getRiseSell() : spuProduct.getRiseSell());
cartGoods.setMemberDiscount(spuProduct.getMemberDiscountResult());
......
......@@ -73,6 +73,15 @@ public class ProductTypeBeanDTO {
*/
private Integer singleOrder;
/**
* 库存模式,目前该模式只针对套餐商品会起作用
* 1-使用套餐库存:即套餐库存和套餐中子商品品库存分别存在、互不影响
* 2-使用联动库存:即套餐商品的库存为套餐库存和套餐中子商品的库存,当用户购买套餐商品时,同时扣减套餐库存和套餐中子商品的库存,当套餐中任一子商品库存为0或套餐商品的库存为0时,该套餐将不能购买
*/
protected Integer stockMode = 1;
public Integer getMemberDiscountResult() {
return this.openMemberDiscount != null && this.openMemberDiscount == 1 ? this.memberDiscount : 100;
}
......
......@@ -284,6 +284,13 @@ public class ShoppingCartGoodsDto {
* 用于创建订单时,是否扣减库存
*/
private boolean isStockLimit;
/**
* 库存模式,目前该模式只针对套餐商品会起作用
* 1-使用套餐库存:即套餐库存和套餐中子商品品库存分别存在、互不影响
* 2-使用联动库存:即套餐商品的库存为套餐库存和套餐中子商品的库存,当用户购买套餐商品时,同时扣减套餐库存和套餐中子商品的库存,当套餐中任一子商品库存为0或套餐商品的库存为0时,该套餐将不能购买
*/
protected Integer stockMode = 1;
/**
* 是否餐具商品
*/
......
......@@ -28,6 +28,14 @@ import java.util.UUID;
@Data
public class CartGoods {
/**
* 库存模式,目前该模式只针对套餐商品会起作用
* 1-使用套餐库存:即套餐库存和套餐中子商品品库存分别存在、互不影响
* 2-使用联动库存:即套餐商品的库存为套餐库存和套餐中子商品的库存,当用户购买套餐商品时,同时扣减套餐库存和套餐中子商品的库存,当套餐中任一子商品库存为0或套餐商品的库存为0时,该套餐将不能购买
*/
protected Integer stockMode = 1;
/**
* 如果加价购是虚拟券商品 这个集合会有券商品赠送的券信息
*/
......
......@@ -443,6 +443,7 @@ public class CalculationCommonService {
cartGoodsDetailDto.setCategoryName(cartGoods.getCategoryName());
cartGoodsDetailDto.setCouponCode(cartGoods.getCouponCode());
cartGoodsDetailDto.setStockLimit(cartGoods.isStockLimit());
cartGoodsDetailDto.setStockMode(cartGoods.getStockMode());
cartGoodsDetailDto.setProductCode(cartGoods.getCustomerCode());
cartGoodsDetailDto.setCustomerCode(cartGoods.getCustomerCode());
cartGoodsDetailDto.setWeight(cartGoods.getWeight());
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment