Commit a38c21b2 by chongfu.liang

换购券

parent cfd03ae7
......@@ -560,18 +560,4 @@ public class ShoppingCartAdapter {
return false;
}
public void updateSpqStock(CartGoods cartGoods, List<ProductBeanDTO> productBeans) {
Optional<ProductBeanDTO> firstProduct = productBeans.stream().filter(p -> ObjectUtils.equals(p.getPid(), cartGoods.getSpuId())).findFirst();
if (!firstProduct.isPresent()) {
return;
}
ProductBeanDTO spuProduct = firstProduct.get();
//是否是sku商品
boolean isSkuProduct = ObjectUtils.equals(GoodsTypeEnum.SKU_GOODS.getGoodsType(), cartGoods.getGoodsType());
// 如果是套餐商品,更新套餐内固定商品&可选商品的详细信息
boolean isSetMealProduct = ObjectUtils.equals(ProductType.SetMeal.getCode(), spuProduct.getType()) || ObjectUtils.equals(ProductType.IncreasedPackage.getCode(), spuProduct.getType());
ProductBeanDTO.SkuProductBean skuProduct = isSkuProduct ? spuProduct.getSkuList().stream().filter(p -> ObjectUtils.equals(cartGoods.getSkuId(), p.getSkuId())).findFirst().get() : null;
cartGoods.setStockLimit(isSkuProduct ? ObjectUtils.equals(1, skuProduct.getStockLimit()) : ObjectUtils.equals(1, spuProduct.getStockLimit()));
}
}
......@@ -193,10 +193,6 @@ public interface ShoppingCartBaseService {
for (CartGoods cartGoods : checkCartRequest.getCartGoodsList()) {
// 当goodsId为空或商品是商品券时直接跳过
if (StringUtils.isEmpty(cartGoods.getGoodsId()) || Objects.equals(cartGoods.getGoodsType(), GoodsTypeEnum.COUPON_GOODS.getGoodsType()) || Objects.equals(cartGoods.getGoodsType(), GoodsTypeEnum.HG_COUPON_GOODS.getGoodsType())) {
if (Objects.equals(cartGoods.getGoodsType(), GoodsTypeEnum.COUPON_GOODS.getGoodsType()) || Objects.equals(cartGoods.getGoodsType(), GoodsTypeEnum.HG_COUPON_GOODS.getGoodsType())){
//商品券和换购券修改库存校验
shoppingCartAdapter.updateSpqStock(cartGoods, productList);
}
continue;
}
shoppingCartAdapter.updateCartGoodsInfoNew(cartGoods, productList);
......
......@@ -23,6 +23,7 @@ public class CheckSpqInfoResponseDto {
* 券名称
*/
private String couponName;
private boolean stockLimit;
/**
* 商品券code
*/
......
......@@ -42,10 +42,12 @@ import cn.freemud.service.thirdparty.*;
import cn.freemud.utils.*;
import com.alibaba.fastjson.JSON;
import com.freemud.application.sdk.api.productcenter.constant.ResponseConstant;
import com.freemud.application.sdk.api.productcenter.domain.ProductBeanDTO;
import com.freemud.application.sdk.api.productcenter.request.product.valid.ValidateShopProductRequest;
import com.freemud.application.sdk.api.productcenter.request.product.valid.ValidateShopProductType;
import com.freemud.application.sdk.api.productcenter.response.ProductResponseDTO;
import com.freemud.application.sdk.api.productcenter.response.valid.ValiadShopProductResponse;
import com.freemud.application.sdk.api.productcenter.response.valid.ValiadShopProductResult;
import com.freemud.card.sdk.comm.Finals;
import com.freemud.card.sdk.comm.SignUtil;
import com.freemud.card.sdk.service.CouponAvailableService;
......@@ -709,6 +711,15 @@ public class CouponServiceImpl implements CouponService {
|| valiadProductResponse.getData() == null || CollectionUtils.isEmpty(valiadProductResponse.getData().getSuccessList())) {
return null;
}
List<ProductBeanDTO> productList = valiadProductResponse.getData().getSuccessList().stream().map(ValiadShopProductResult::getProductType).collect(Collectors.toList());
Optional<ProductBeanDTO> firstProduct = productList.stream().filter(p -> ObjectUtils.equals(p.getPid(), productsVo.getSpuId())).findFirst();
if (!firstProduct.isPresent()) {
return null;
}
ProductBeanDTO spuProduct = firstProduct.get();
CheckSpqInfoResponseDto dto = new CheckSpqInfoResponseDto();
dto.setCouponCode(couponCode);
dto.setActiveCode(couponDetailResponseDto.getDetails().get(0).getActive().getActiveCode());
......@@ -717,6 +728,7 @@ public class CouponServiceImpl implements CouponService {
dto.setPrice(productsVo.getFinalPrice());
dto.setSpuId(productsVo.getSpuId());
dto.setSpuName(productsVo.getSkuName());
dto.setStockLimit(ObjectUtils.equals(1, spuProduct.getStockLimit()));
dto.setSkuId(productsVo.getSkuId());
dto.setSkuName(StringUtils.isNotBlank(productsVo.getSkuName()) ? productsVo.getSkuName() : productsVo.getSpuName());
dto.setPicture(productsVo.getSpuPicture());
......@@ -805,7 +817,6 @@ public class CouponServiceImpl implements CouponService {
return null;
}
//券返回的商品id
List<String> skuIds = Lists.newArrayList();
String skuId = goodsId;
......@@ -823,6 +834,16 @@ public class CouponServiceImpl implements CouponService {
|| valiadProductResponse.getData() == null || CollectionUtils.isEmpty(valiadProductResponse.getData().getSuccessList())) {
return null;
}
List<ProductBeanDTO> productList = valiadProductResponse.getData().getSuccessList().stream().map(ValiadShopProductResult::getProductType).collect(Collectors.toList());
Optional<ProductBeanDTO> firstProduct = productList.stream().filter(p -> ObjectUtils.equals(p.getPid(), productsVo.getSpuId())).findFirst();
if (!firstProduct.isPresent()) {
return null;
}
ProductBeanDTO spuProduct = firstProduct.get();
// 如果是套餐商品,更新套餐内固定商品&可选商品的详细信息
ProductBeanDTO.SkuProductBean skuProduct = spuProduct.getSkuList().stream().filter(p -> ObjectUtils.equals(productsVo.getSkuId(), p.getSkuId())).findFirst().get();
CheckSpqInfoResponseDto dto = new CheckSpqInfoResponseDto();
dto.setCouponCode(couponCode);
dto.setActiveCode(couponActivityDetail.getActive().getActiveCode());
......@@ -836,6 +857,7 @@ public class CouponServiceImpl implements CouponService {
dto.setPicture(productsVo.getSpuPicture());
dto.setDefaultSpecName(productsVo.getDefaultSpecName());
dto.setDefaultSpecId(productsVo.getDefaultSpecId());
dto.setStockLimit(ObjectUtils.equals(1, skuProduct.getStockLimit()));
dto.setExtras(productsVo.getExtra());
log.info("dto***" + dto);
return dto;
......
......@@ -735,6 +735,9 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
CheckCartRequest checkCartRequest = assortmentSdkService.checkShoppingCartSdk(cartGoodsList, partnerId, storeId, shoppingCartGoodsResponseVo,
shoppingCartInfoRequestVo.getOrderType(), tableNumber, shoppingCartInfoRequestVo.getMenuType() ,shoppingCartBaseService);
com.freemud.sdk.api.assortment.shoppingcart.domain.ShoppingCartGoodsResponseVo cartGoodsResponseVo = checkCartRequest.getShoppingCartGoodsResponseVo();
// 校验商品券库存
//商品不再售卖状态或价格变动,直接返回报错
if (cartGoodsResponseVo != null) {
if (cartGoodsResponseVo.getCartGoodsStates() != null && cartGoodsResponseVo.getCartGoodsStates().isHasInvalidGoods()) {
......@@ -937,6 +940,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
validCouponMap.put(spqId, checkSpqInfoResponseDto);
cartGoods.setName(checkSpqInfoResponseDto.getCouponName());
cartGoods.setSpuName(checkSpqInfoResponseDto.getCouponName());
cartGoods.setStockLimit(checkSpqInfoResponseDto.isStockLimit());
// 添加请求的优惠券信息
ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon coupon = new ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon();
coupon.setCode(checkSpqInfoResponseDto.getCouponCode());
......
......@@ -104,7 +104,7 @@ public class CalculationSharingDiscountService {
validCouponMap.put(spqId, checkSpqInfo);
cartGoods.setName(checkSpqInfo.getCouponName());
cartGoods.setSpuName(checkSpqInfo.getCouponName());
cartGoods.setStockLimit(checkSpqInfo.isStockLimit());
CalculationSharingDiscountRequestDto.CalculationDiscountCoupon coupon = new CalculationSharingDiscountRequestDto.CalculationDiscountCoupon();
coupon.setCode(checkSpqInfo.getCouponCode());
coupon.setActivityCode(checkSpqInfo.getActiveCode());
......
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