Commit 8be97216 by shuhu.hou@freemud.cn

Merge branch 'feature/1.9.9_购物车校验' into develop

# Conflicts:
#	assortment-shoppingcart-sdk/src/main/java/com/freemud/sdk/api/assortment/shoppingcart/adapter/ShoppingCartAdapter.java
parents da4247aa a88a1bbb
package com.freemud.sdk.api.assortment.shoppingcart.adapter;
import com.freemud.application.sdk.api.log.ErrorLog;
import com.freemud.application.sdk.api.productcenter.domain.ProductBeanDTO;
import com.freemud.application.sdk.api.productcenter.request.product.valid.ProductAttributeValueType;
import com.freemud.application.sdk.api.productcenter.request.product.valid.ValidateShopProductRequest;
......@@ -252,13 +253,14 @@ public class ShoppingCartAdapter {
* @param productBeans 购物车中所有的productId对应的商品详情
*/
public void updateCartGoodsInfoNew(CartGoods cartGoods, List<ProductBeanDTO> productBeans) {
try {
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 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;
......@@ -266,12 +268,12 @@ public class ShoppingCartAdapter {
Map<String, String> attributes = getAttributesNew(cartGoods.getExtra());
cartGoods.setName(spuProduct.getName());
cartGoods.setSpuName(spuProduct.getName());
cartGoods.setSkuName(isSkuProduct?skuProduct.getProductName():spuProduct.getName());
cartGoods.setSkuName(isSkuProduct ? skuProduct.getProductName() : spuProduct.getName());
cartGoods.setSpecProductId(attributes.get(ATTRIBUTEID));
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.setCustomerCode(isSkuProduct?skuProduct.getCustomerCode(): spuProduct.getCustomerCode());
cartGoods.setPackPrice(isSkuProduct ? skuProduct.getPackPrice() : spuProduct.getPackPrice());
cartGoods.setStockLimit(isSkuProduct ? ObjectUtils.equals(1, skuProduct.getStockLimit()) : ObjectUtils.equals(1, spuProduct.getStockLimit()));
cartGoods.setCustomerCode(isSkuProduct ? skuProduct.getCustomerCode() : spuProduct.getCustomerCode());
String skuSpecName = "";
if (isSkuProduct && CollectionUtils.isNotEmpty(skuProduct.getSkuSpecValues())) {
......@@ -285,30 +287,34 @@ public class ShoppingCartAdapter {
if (isSetMealProduct) {
if (CollectionUtils.isNotEmpty(cartGoods.getProductComboList())) {
for (CartGoods.ComboxGoods productCombo : cartGoods.getProductComboList()) {
updateComboxGoodsInfoNew(productCombo,spuProduct, true);
updateComboxGoodsInfoNew(productCombo, spuProduct, true);
}
}
if (CollectionUtils.isNotEmpty(cartGoods.getProductGroupList())) {
for (CartGoods.ComboxGoods productGroup : cartGoods.getProductGroupList()) {
updateComboxGoodsInfoNew(productGroup,spuProduct, false);
updateComboxGoodsInfoNew(productGroup, spuProduct, false);
}
}
}
//更新当前商品行价格
Long newOrigOriginalPrice = 0L;
if (isSetMealProduct) {
newOrigOriginalPrice+=cartGoods.getProductComboList().stream().mapToLong(t->t.getOriginalAmount()).sum();
newOrigOriginalPrice += cartGoods.getProductComboList().stream().mapToLong(t -> t.getOriginalAmount()).sum();
newOrigOriginalPrice += cartGoods.getProductGroupList().stream().mapToLong(t -> t.getOriginalAmount()).sum();
} else {
newOrigOriginalPrice =isSkuProduct?skuProduct.getFinalPrice(): spuProduct.getFinalPrice();
newOrigOriginalPrice = isSkuProduct ? skuProduct.getFinalPrice() : spuProduct.getFinalPrice();
}
cartGoods.setOriginalPrice(newOrigOriginalPrice);
cartGoods.setOriginalAmount(newOrigOriginalPrice*cartGoods.getQty());
cartGoods.setAmount(newOrigOriginalPrice*cartGoods.getQty());
cartGoods.setOriginalAmount(newOrigOriginalPrice * cartGoods.getQty());
cartGoods.setAmount(newOrigOriginalPrice * cartGoods.getQty());
//咨询商品服务,套餐售价取originalPrice
cartGoods.setFinalPrice(isSetMealProduct?spuProduct.getOriginalPrice(): isSkuProduct? skuProduct.getFinalPrice():spuProduct.getFinalPrice());
cartGoods.setFinalPrice(isSetMealProduct ? spuProduct.getOriginalPrice() : isSkuProduct ? skuProduct.getFinalPrice() : spuProduct.getFinalPrice());
cartGoods.setUnit(spuProduct.getUnit());
cartGoods.setWeightType(CommonsConstant.WEIGHT_PRODUCT.equals(spuProduct.getWeightType()));
} catch (Exception ex) {
ErrorLog.infoConvertJson(this.getClass(),"updateCartGoodsInfoNew_Error",ex);
cartGoods.setCartGoodsUid(null);
}
}
private boolean updateComboxGoodsInfo(CartGoods cartGoods, CartGoods.ComboxGoods comboxGoods, ProductBeanDTO parentProductBean, List<ProductBeanDTO> productBeans, CartGoodsStates cartGoodsStates, List<String> invalidGoodsIdList) {
......
......@@ -212,6 +212,12 @@ public interface ShoppingCartBaseService {
if (cartGoodsStates != null && cartGoodsStates.isOrderWayFlag()) {
setToastMsgIfNotExist(checkCartRequest.getShoppingCartGoodsResponseVo(), ShoppingCartConstant.ORDER_WAY_CHANGE);
}
//若商品详情赋值有异常,直接移除购物车
if (checkCartRequest.getCartGoodsList().stream().anyMatch(cart->StringUtils.isEmpty( cart.getCartGoodsUid()))){
checkCartRequest.getCartGoodsList().removeIf(k -> StringUtils.isEmpty(k.getCartGoodsUid()));
checkCartRequest.getShoppingCartGoodsResponseVo().setChanged(true);
checkCartRequest.getShoppingCartGoodsResponseVo().setToastMsg(ShoppingCartConstant.SHOPPING_CART_INVALIAD_GOODS);
}
return CartResponseUtil.success(checkCartRequest);
} catch (Exception e) {
ErrorLog.printErrorLog("assortment-shoppingcart-sdk", checkCartRequest.getTrackingNo(), e.getMessage(), "checkAllCartGoods", checkCartRequest, e, Level.ERROR);
......@@ -268,7 +274,7 @@ public interface ShoppingCartBaseService {
default CartGoodsStates updateSpqCartGoodsInfo(List<CartGoods> cartGoodsList, Integer orderWay, String partnerId, String trackingNo, CartGoodsStates goodsStates) {
//获取所有商品券cartGoodsUid=sqp+code
List<String> couponIds = cartGoodsList.parallelStream()
.filter(k -> k.getCartGoodsUid().startsWith(CommonsConstant.COUPON_PREFIX)).map(CartGoods::getSpuId).collect(Collectors.toList());
.filter(k ->StringUtils.isNotEmpty(k.getCartGoodsUid())&& k.getCartGoodsUid().startsWith(CommonsConstant.COUPON_PREFIX)).map(CartGoods::getSpuId).collect(Collectors.toList());
if (CollectionUtils.isEmpty(couponIds)) {
return goodsStates;
......
......@@ -334,7 +334,7 @@ public class ShoppingCartConvertAdapter {
cartGoods.setSpuId(spuId);
cartGoods.setSkuId(skuId);
cartGoods.setQty(qty);
Integer goodsType = StringUtils.isEmpty(skuId) ? GoodsTypeEnum.SPU_GOODS.getGoodsType() : GoodsTypeEnum.SKU_GOODS.getGoodsType();
Integer goodsType = StringUtils.isEmpty(skuId)||ObjectUtils.equals(spuId,skuId) ? GoodsTypeEnum.SPU_GOODS.getGoodsType() : GoodsTypeEnum.SKU_GOODS.getGoodsType();
if (spuId.startsWith(CommonsConstant.COUPON_PREFIX)) {
goodsType = GoodsTypeEnum.COUPON_GOODS.getGoodsType();
} else if (CollectionUtils.isNotEmpty(addShoppingCartGoodsRequestVo.getProductComboList())) {
......
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