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; 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.domain.ProductBeanDTO;
import com.freemud.application.sdk.api.productcenter.request.product.valid.ProductAttributeValueType; import com.freemud.application.sdk.api.productcenter.request.product.valid.ProductAttributeValueType;
import com.freemud.application.sdk.api.productcenter.request.product.valid.ValidateShopProductRequest; import com.freemud.application.sdk.api.productcenter.request.product.valid.ValidateShopProductRequest;
...@@ -252,13 +253,14 @@ public class ShoppingCartAdapter { ...@@ -252,13 +253,14 @@ public class ShoppingCartAdapter {
* @param productBeans 购物车中所有的productId对应的商品详情 * @param productBeans 购物车中所有的productId对应的商品详情
*/ */
public void updateCartGoodsInfoNew(CartGoods cartGoods, List<ProductBeanDTO> productBeans) { public void updateCartGoodsInfoNew(CartGoods cartGoods, List<ProductBeanDTO> productBeans) {
try {
Optional<ProductBeanDTO> firstProduct = productBeans.stream().filter(p -> ObjectUtils.equals(p.getPid(), cartGoods.getSpuId())).findFirst(); Optional<ProductBeanDTO> firstProduct = productBeans.stream().filter(p -> ObjectUtils.equals(p.getPid(), cartGoods.getSpuId())).findFirst();
if (!firstProduct.isPresent()) { if (!firstProduct.isPresent()) {
return; return;
} }
ProductBeanDTO spuProduct = firstProduct.get(); ProductBeanDTO spuProduct = firstProduct.get();
//是否是sku商品 //是否是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()); 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; 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 { ...@@ -266,12 +268,12 @@ public class ShoppingCartAdapter {
Map<String, String> attributes = getAttributesNew(cartGoods.getExtra()); Map<String, String> attributes = getAttributesNew(cartGoods.getExtra());
cartGoods.setName(spuProduct.getName()); cartGoods.setName(spuProduct.getName());
cartGoods.setSpuName(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.setSpecProductId(attributes.get(ATTRIBUTEID));
cartGoods.setPic(spuProduct.getPicture()); cartGoods.setPic(spuProduct.getPicture());
cartGoods.setPackPrice(isSkuProduct?skuProduct.getPackPrice(): spuProduct.getPackPrice()); cartGoods.setPackPrice(isSkuProduct ? skuProduct.getPackPrice() : spuProduct.getPackPrice());
cartGoods.setStockLimit(isSkuProduct? ObjectUtils.equals(1, skuProduct.getStockLimit()):ObjectUtils.equals(1, spuProduct.getStockLimit())); cartGoods.setStockLimit(isSkuProduct ? ObjectUtils.equals(1, skuProduct.getStockLimit()) : ObjectUtils.equals(1, spuProduct.getStockLimit()));
cartGoods.setCustomerCode(isSkuProduct?skuProduct.getCustomerCode(): spuProduct.getCustomerCode()); cartGoods.setCustomerCode(isSkuProduct ? skuProduct.getCustomerCode() : spuProduct.getCustomerCode());
String skuSpecName = ""; String skuSpecName = "";
if (isSkuProduct && CollectionUtils.isNotEmpty(skuProduct.getSkuSpecValues())) { if (isSkuProduct && CollectionUtils.isNotEmpty(skuProduct.getSkuSpecValues())) {
...@@ -285,30 +287,34 @@ public class ShoppingCartAdapter { ...@@ -285,30 +287,34 @@ public class ShoppingCartAdapter {
if (isSetMealProduct) { if (isSetMealProduct) {
if (CollectionUtils.isNotEmpty(cartGoods.getProductComboList())) { if (CollectionUtils.isNotEmpty(cartGoods.getProductComboList())) {
for (CartGoods.ComboxGoods productCombo : cartGoods.getProductComboList()) { for (CartGoods.ComboxGoods productCombo : cartGoods.getProductComboList()) {
updateComboxGoodsInfoNew(productCombo,spuProduct, true); updateComboxGoodsInfoNew(productCombo, spuProduct, true);
} }
} }
if (CollectionUtils.isNotEmpty(cartGoods.getProductGroupList())) { if (CollectionUtils.isNotEmpty(cartGoods.getProductGroupList())) {
for (CartGoods.ComboxGoods productGroup : cartGoods.getProductGroupList()) { for (CartGoods.ComboxGoods productGroup : cartGoods.getProductGroupList()) {
updateComboxGoodsInfoNew(productGroup,spuProduct, false); updateComboxGoodsInfoNew(productGroup, spuProduct, false);
} }
} }
} }
//更新当前商品行价格 //更新当前商品行价格
Long newOrigOriginalPrice = 0L; Long newOrigOriginalPrice = 0L;
if (isSetMealProduct) { 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(); newOrigOriginalPrice += cartGoods.getProductGroupList().stream().mapToLong(t -> t.getOriginalAmount()).sum();
} else { } else {
newOrigOriginalPrice =isSkuProduct?skuProduct.getFinalPrice(): spuProduct.getFinalPrice(); newOrigOriginalPrice = isSkuProduct ? skuProduct.getFinalPrice() : spuProduct.getFinalPrice();
} }
cartGoods.setOriginalPrice(newOrigOriginalPrice); cartGoods.setOriginalPrice(newOrigOriginalPrice);
cartGoods.setOriginalAmount(newOrigOriginalPrice*cartGoods.getQty()); cartGoods.setOriginalAmount(newOrigOriginalPrice * cartGoods.getQty());
cartGoods.setAmount(newOrigOriginalPrice*cartGoods.getQty()); cartGoods.setAmount(newOrigOriginalPrice * cartGoods.getQty());
//咨询商品服务,套餐售价取originalPrice //咨询商品服务,套餐售价取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.setUnit(spuProduct.getUnit());
cartGoods.setWeightType(CommonsConstant.WEIGHT_PRODUCT.equals(spuProduct.getWeightType())); 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) { 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 { ...@@ -212,6 +212,12 @@ public interface ShoppingCartBaseService {
if (cartGoodsStates != null && cartGoodsStates.isOrderWayFlag()) { if (cartGoodsStates != null && cartGoodsStates.isOrderWayFlag()) {
setToastMsgIfNotExist(checkCartRequest.getShoppingCartGoodsResponseVo(), ShoppingCartConstant.ORDER_WAY_CHANGE); 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); return CartResponseUtil.success(checkCartRequest);
} catch (Exception e) { } catch (Exception e) {
ErrorLog.printErrorLog("assortment-shoppingcart-sdk", checkCartRequest.getTrackingNo(), e.getMessage(), "checkAllCartGoods", checkCartRequest, e, Level.ERROR); ErrorLog.printErrorLog("assortment-shoppingcart-sdk", checkCartRequest.getTrackingNo(), e.getMessage(), "checkAllCartGoods", checkCartRequest, e, Level.ERROR);
...@@ -268,7 +274,7 @@ public interface ShoppingCartBaseService { ...@@ -268,7 +274,7 @@ public interface ShoppingCartBaseService {
default CartGoodsStates updateSpqCartGoodsInfo(List<CartGoods> cartGoodsList, Integer orderWay, String partnerId, String trackingNo, CartGoodsStates goodsStates) { default CartGoodsStates updateSpqCartGoodsInfo(List<CartGoods> cartGoodsList, Integer orderWay, String partnerId, String trackingNo, CartGoodsStates goodsStates) {
//获取所有商品券cartGoodsUid=sqp+code //获取所有商品券cartGoodsUid=sqp+code
List<String> couponIds = cartGoodsList.parallelStream() 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)) { if (CollectionUtils.isEmpty(couponIds)) {
return goodsStates; return goodsStates;
......
...@@ -334,7 +334,7 @@ public class ShoppingCartConvertAdapter { ...@@ -334,7 +334,7 @@ public class ShoppingCartConvertAdapter {
cartGoods.setSpuId(spuId); cartGoods.setSpuId(spuId);
cartGoods.setSkuId(skuId); cartGoods.setSkuId(skuId);
cartGoods.setQty(qty); 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)) { if (spuId.startsWith(CommonsConstant.COUPON_PREFIX)) {
goodsType = GoodsTypeEnum.COUPON_GOODS.getGoodsType(); goodsType = GoodsTypeEnum.COUPON_GOODS.getGoodsType();
} else if (CollectionUtils.isNotEmpty(addShoppingCartGoodsRequestVo.getProductComboList())) { } 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