Commit bdd1792b by ping.wu

麦咖啡加料与特制属性

parent ee4ac3f0
...@@ -121,7 +121,7 @@ public class CartGoods { ...@@ -121,7 +121,7 @@ public class CartGoods {
/** /**
* 麦咖啡定制属性 * 麦咖啡定制属性
*/ */
private List<CartGoodsExt> extra2; private List<SpecialExtra> specialExtra;
/** /**
* 创建时间(mili) * 创建时间(mili)
...@@ -205,19 +205,20 @@ public class CartGoods { ...@@ -205,19 +205,20 @@ public class CartGoods {
} }
@Data @Data
public final static class CartGoodsExt { public final static class SpecialExtra {
/** /**
* 定制属性Id * 属性Id
*/ */
private String attributeId; private String attributeId;
/** /**
* 定制属性code * 属性名
*/ */
private String attributeCode; private String attributeName;
/** /**
* 定制属性名称 * 麦咖啡特定属性入机code
*/ */
private String attributeName; private String specialCode;
} }
@Data @Data
...@@ -226,6 +227,7 @@ public class CartGoods { ...@@ -226,6 +227,7 @@ public class CartGoods {
* 单规格spuId,多规格skuId * 单规格spuId,多规格skuId
*/ */
private String goodsId; private String goodsId;
private String spuId;
private String skuId; private String skuId;
private String skuName; private String skuName;
/** /**
...@@ -309,7 +311,7 @@ public class CartGoods { ...@@ -309,7 +311,7 @@ public class CartGoods {
/** /**
* 麦咖啡定制属性 * 麦咖啡定制属性
*/ */
private List<CartGoodsExt> extra2; private List<SpecialExtra> specialExtra;
/** /**
* 麦咖啡套餐商品加料 * 麦咖啡套餐商品加料
......
...@@ -281,6 +281,22 @@ public class ShoppingCartConvertAdapter { ...@@ -281,6 +281,22 @@ public class ShoppingCartConvertAdapter {
cartGoodsDetailDto.setUnit(comboxGoods.getUnit()); cartGoodsDetailDto.setUnit(comboxGoods.getUnit());
List<ShoppingCartGoodsDto.CartGoodsDetailDto.CartGoodsExtra> cartGoodsExtras = BeanUtil.convertBeans(comboxGoods.getExtra(), ShoppingCartGoodsDto.CartGoodsDetailDto.CartGoodsExtra::new); List<ShoppingCartGoodsDto.CartGoodsDetailDto.CartGoodsExtra> cartGoodsExtras = BeanUtil.convertBeans(comboxGoods.getExtra(), ShoppingCartGoodsDto.CartGoodsDetailDto.CartGoodsExtra::new);
cartGoodsDetailDto.setExtraList(cartGoodsExtras); cartGoodsDetailDto.setExtraList(cartGoodsExtras);
cartGoodsDetailDto.setSpecialExtra(comboxGoods.getSpecialExtra());
//小料
if (CollectionUtils.isNotEmpty(comboxGoods.getProductMaterialList())) {
List<ShoppingCartGoodsDto.CartGoodsDetailDto.MaterialGoods> materialList = new ArrayList<>(0);
for (CartGoods.MaterialGoods materialGoods : comboxGoods.getProductMaterialList()) {
ShoppingCartGoodsDto.CartGoodsDetailDto.MaterialGoods goods = new ShoppingCartGoodsDto.CartGoodsDetailDto.MaterialGoods();
goods.setSpuId(materialGoods.getSpuId());
goods.setSpuName(materialGoods.getSpuName());
goods.setOriginalPrice(materialGoods.getOriginalPrice());
goods.setSalePrice(materialGoods.getFinalPrice());
goods.setQty(cartGoods.getQty());
goods.setTotalDiscountAmount(0);
materialList.add(goods);
}
cartGoodsDetailDto.setMaterialList(materialList);
}
//获取当前套餐固定商品的均摊价格 //获取当前套餐固定商品的均摊价格
if (isFixed) { if (isFixed) {
if (size-- == 1) { if (size-- == 1) {
...@@ -517,7 +533,8 @@ public class ShoppingCartConvertAdapter { ...@@ -517,7 +533,8 @@ public class ShoppingCartConvertAdapter {
if (CollectionUtils.isNotEmpty(productComboList)) { if (CollectionUtils.isNotEmpty(productComboList)) {
for (com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods.ComboxGoods comboxGoods : productComboList) { for (com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods.ComboxGoods comboxGoods : productComboList) {
ValidateSkuProductType validateSkuProductType = new ValidateSkuProductType(); ValidateSkuProductType validateSkuProductType = new ValidateSkuProductType();
validateSkuProductType.setProductId(comboxGoods.getGoodsId()); validateSkuProductType.setProductId(comboxGoods.getSpuId());
validateSkuProductType.setSkuId(comboxGoods.getSkuId());
validateSkuProductType.setPrice(comboxGoods.getOriginalPrice() == null ? 0 : comboxGoods.getOriginalPrice().intValue()); validateSkuProductType.setPrice(comboxGoods.getOriginalPrice() == null ? 0 : comboxGoods.getOriginalPrice().intValue());
validateSkuProductType.setMarkUpPrice(comboxGoods.getFinalPrice() == null ? 0 : comboxGoods.getFinalPrice().intValue()); validateSkuProductType.setMarkUpPrice(comboxGoods.getFinalPrice() == null ? 0 : comboxGoods.getFinalPrice().intValue());
validateSkuProductType.setQty(comboxGoods.getQty()); validateSkuProductType.setQty(comboxGoods.getQty());
...@@ -576,17 +593,33 @@ public class ShoppingCartConvertAdapter { ...@@ -576,17 +593,33 @@ public class ShoppingCartConvertAdapter {
//购物车小标题 //购物车小标题
cartGoods.setSubName(StringUtils.isNotEmpty(skuSpecName) && StringUtils.isNotEmpty(attributeName) ? cartGoods.setSubName(StringUtils.isNotEmpty(skuSpecName) && StringUtils.isNotEmpty(attributeName) ?
skuSpecName + "/" + attributeName : skuSpecName + attributeName); skuSpecName + "/" + attributeName : skuSpecName + attributeName);
if (isSetMealProduct) { if (isSetMealProduct) {
//套餐固定商品
if (CollectionUtils.isNotEmpty(cartGoods.getProductComboList())) { if (CollectionUtils.isNotEmpty(cartGoods.getProductComboList())) {
for (com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods.ComboxGoods productCombo : cartGoods.getProductComboList()) { for (com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods.ComboxGoods productCombo : cartGoods.getProductComboList()){
//套餐子商品多规格商品
if(productCombo.getSpuId() == null && !productCombo.getSkuId().equals(productCombo.getSpuId()) ){
updateComboxGoodsInfoForMCoffee(productCombo, spuProduct, true); updateComboxGoodsInfoForMCoffee(productCombo, spuProduct, true);
}else {
//套餐子商品为单品
updateComboxGoodsInfoForMCoffee(productCombo, spuProduct, true);
}
} }
} }
//套餐可选商品
if (CollectionUtils.isNotEmpty(cartGoods.getProductGroupList())) { if (CollectionUtils.isNotEmpty(cartGoods.getProductGroupList())) {
for (com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods.ComboxGoods comboxGoods : cartGoods.getProductComboList()){
//套餐子商品多规格商品
if(comboxGoods.getSpuId() == null && !comboxGoods.getSkuId().equals(comboxGoods.getSpuId()) ){
for (com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods.ComboxGoods productGroup : cartGoods.getProductGroupList()) { for (com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods.ComboxGoods productGroup : cartGoods.getProductGroupList()) {
updateComboxGoodsInfoForMCoffee(productGroup, spuProduct, false); updateComboxGoodsInfoForMCoffee(productGroup, spuProduct, false);
} }
}else {
for (com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods.ComboxGoods productGroup : cartGoods.getProductGroupList()) {
updateComboxGoodsInfoForMCoffee(productGroup, spuProduct, false);
}
}
}
} }
} }
//更新当前商品行价格 //更新当前商品行价格
...@@ -655,18 +688,15 @@ public class ShoppingCartConvertAdapter { ...@@ -655,18 +688,15 @@ public class ShoppingCartConvertAdapter {
comboxGoods.setWeight(isComboxGoods ? productComboType.getWeight() : groupDetailType.getWeight()); comboxGoods.setWeight(isComboxGoods ? productComboType.getWeight() : groupDetailType.getWeight());
comboxGoods.setTax(isComboxGoods ? productComboType.getTax() : groupDetailType.getTax()); comboxGoods.setTax(isComboxGoods ? productComboType.getTax() : groupDetailType.getTax());
comboxGoods.setTaxId(isComboxGoods ? productComboType.getTaxId() : groupDetailType.getTaxId()); comboxGoods.setTaxId(isComboxGoods ? productComboType.getTaxId() : groupDetailType.getTaxId());
//套餐定制属性
List<com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods.CartGoodsExt> cartGoodsExts = new ArrayList<>();
com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods.CartGoodsExt cartGoodsExt = new com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods.CartGoodsExt();
cartGoodsExts.add(cartGoodsExt);
comboxGoods.setExtra2(cartGoodsExts);
//套餐内商品加料 //套餐内商品加料
if(CollectionUtils.isNotEmpty(comboxGoods.getProductMaterialList())){
List<com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods.MaterialGoods> productMaterialList = new ArrayList<>(); List<com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods.MaterialGoods> productMaterialList = new ArrayList<>();
com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods.MaterialGoods materialGoods = new com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods.MaterialGoods(); com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods.MaterialGoods materialGoods = new com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods.MaterialGoods();
productMaterialList.add(materialGoods); productMaterialList.add(materialGoods);
comboxGoods.setProductMaterialList(productMaterialList); comboxGoods.setProductMaterialList(productMaterialList);
} }
}
private Map<String, String> getAttributesNew(List<com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods.CartGoodsExtra> extra) { private Map<String, String> getAttributesNew(List<com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods.CartGoodsExtra> extra) {
if (CollectionUtils.isEmpty(extra)) { if (CollectionUtils.isEmpty(extra)) {
...@@ -733,4 +763,159 @@ public class ShoppingCartConvertAdapter { ...@@ -733,4 +763,159 @@ public class ShoppingCartConvertAdapter {
cartGoods.setOriginalMaterialAmount(originalMaterAmount); cartGoods.setOriginalMaterialAmount(originalMaterAmount);
} }
public void updateCartGoodsInfo(com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods cartGoods, ProductBeanDTO spuProduct,Map<String,ProductBeanDTO> subProductTypeMap) {
try {
//是否是sku商品
boolean isSkuProduct = ObjectUtils.equals(com.freemud.sdk.api.assortment.shoppingcart.constant.GoodsTypeEnum.SKU_GOODS.getGoodsType(), cartGoods.getGoodsType());
// 如果是套餐商品,更新套餐内固定商品&可选商品的详细信息
boolean isSetMealProduct = ObjectUtils.equals(com.freemud.sdk.api.assortment.shoppingcart.constant.ProductType.SetMeal.getCode(), spuProduct.getType()) || ObjectUtils.equals(com.freemud.sdk.api.assortment.shoppingcart.constant.ProductType.IncreasedPackage.getCode(), spuProduct.getType());
ProductBeanDTO.SkuProductBean skuProduct = isSkuProduct ? spuProduct.getSkuList().stream().filter(p -> ObjectUtils.equals(cartGoods.getSkuId(), p.getSkuId())).findFirst().get() : null;
Map<String, String> attributes = getAttributesNew(cartGoods.getExtra());
if(!"早餐啡常搭".equals(cartGoods.getName()) && !"早餐啡常搭".equals(cartGoods.getSkuName()) && !"早餐啡常搭".equals(cartGoods.getSpuName())
&& !"啡常搭".equals(cartGoods.getName()) && !"啡常搭".equals(cartGoods.getSkuName()) && !"啡常搭".equals(cartGoods.getSpuName())) {
cartGoods.setName(spuProduct.getName());
cartGoods.setSpuName(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.setRiseSell(isSkuProduct ? skuProduct.getRiseSell() : spuProduct.getRiseSell());
cartGoods.setMemberDiscount(spuProduct.getMemberDiscountResult());
cartGoods.setClassificationId(spuProduct.getCategory());
cartGoods.setClassificationName(spuProduct.getCategoryName());
cartGoods.setTax(spuProduct.getTax());
cartGoods.setTaxId(spuProduct.getTaxId());
String skuSpecName = "";
if (isSkuProduct && CollectionUtils.isNotEmpty(skuProduct.getSkuSpecValues())) {
List<String> skuSpecValus = skuProduct.getSkuSpecValues().stream().map(p -> p.getSpecValue()).collect(Collectors.toList());
skuSpecName = StringUtils.join(skuSpecValus, "/");
}
String attributeName = attributes.get(ATTRIBUTENAME) == null ? "" : attributes.get(ATTRIBUTENAME);
//购物车小标题
cartGoods.setSubName(StringUtils.isNotEmpty(skuSpecName) && StringUtils.isNotEmpty(attributeName) ?
skuSpecName + "/" + attributeName : skuSpecName + attributeName);
if (isSetMealProduct) {
//套餐固定商品
if (CollectionUtils.isNotEmpty(cartGoods.getProductComboList())) {
for (com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods.ComboxGoods productCombo : cartGoods.getProductComboList()){
//套餐子商品多规格商品
if(productCombo.getSpuId() != null && !productCombo.getSkuId().equals(productCombo.getSpuId()) ){
ProductBeanDTO productBeanDTO = subProductTypeMap.get(productCombo.getSpuId());
updateComboxGoodsInfoFor(productCombo, productBeanDTO, true);
}else {
//套餐子商品为单品
updateComboxGoodsInfoForMCoffee(productCombo, spuProduct, true);
}
}
}
//套餐可选商品
if (CollectionUtils.isNotEmpty(cartGoods.getProductGroupList())) {
for (com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods.ComboxGoods comboxGoods : cartGoods.getProductGroupList()){
//套餐子商品多规格商品
if(comboxGoods.getSpuId() != null && !comboxGoods.getSkuId().equals(comboxGoods.getSpuId()) ){
for (com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods.ComboxGoods productGroup : cartGoods.getProductGroupList()) {
updateComboxGoodsInfoForMCoffee(productGroup, spuProduct, false);
}
}else {
for (com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods.ComboxGoods productGroup : cartGoods.getProductGroupList()) {
updateComboxGoodsInfoForMCoffee(productGroup, spuProduct, false);
}
}
}
}
}
//更新当前商品行价格
Long newOrigOriginalPrice = 0L;
if (isSetMealProduct) {
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();
}
cartGoods.setOriginalPrice(newOrigOriginalPrice);
cartGoods.setOriginalAmount(newOrigOriginalPrice * cartGoods.getQty());
cartGoods.setAmount(newOrigOriginalPrice * cartGoods.getQty());
//咨询商品服务,套餐售价取originalPrice
cartGoods.setFinalPrice(isSetMealProduct ? spuProduct.getOriginalPrice() : isSkuProduct ? skuProduct.getFinalPrice() : spuProduct.getFinalPrice());
cartGoods.setWeight(isSkuProduct ? skuProduct.getWeight() : spuProduct.getWeight());
cartGoods.setUnit(isSkuProduct ? skuProduct.getUnit() : spuProduct.getUnit());
cartGoods.setWeightType(CommonsConstant.WEIGHT_PRODUCT.equals(spuProduct.getWeightType()));
cartGoods.setMaterialAmount(0L);
cartGoods.setOriginalMaterialAmount(0L);
// todo 设置加料
this.checkMaterialProductForMCoffee(cartGoods, spuProduct);
} catch (Exception ex) {
ErrorLog.infoConvertJson(this.getClass(), "updateCartGoodsInfoForMCoffee_Error", ex);
cartGoods.setCartGoodsUid(null);
}
}
private void updateComboxGoodsInfoFor(com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods.ComboxGoods comboxGoods, ProductBeanDTO productBeanDTO, boolean isComboxGoods) {
if(CollectionUtils.isEmpty(productBeanDTO.getSkuList())){
return;
}
ProductBeanDTO.SkuProductBean comboxGoodsSkuProductBean = null;
for (ProductBeanDTO.SkuProductBean skuProductBean : productBeanDTO.getSkuList()){
if(comboxGoods.getSkuId().equals(skuProductBean.getSkuId())){
comboxGoodsSkuProductBean = skuProductBean;
break;
}
}
if(comboxGoodsSkuProductBean == null){
return;
}
// 若是固定商品则取商品详情的FinalPrice,若是可选商品则取MarkUpPrice
Long finalPrice = comboxGoodsSkuProductBean.getFinalPrice();
// 设置商品详情
Map<String, String> attributes = getAttributesNew(comboxGoods.getExtra());
comboxGoods.setName(comboxGoodsSkuProductBean.getProductName());
comboxGoods.setSpuName(productBeanDTO.getName());
comboxGoods.setSkuName(comboxGoodsSkuProductBean.getProductName());
comboxGoods.setSpecProductId(attributes.get(ATTRIBUTEID));
comboxGoods.setSubName(attributes.get(ATTRIBUTENAME));
comboxGoods.setPic(productBeanDTO.getPicture());
comboxGoods.setOriginalPrice(comboxGoodsSkuProductBean.getOriginalPrice());
comboxGoods.setOriginalAmount(comboxGoods.getOriginalPrice() * comboxGoods.getQty());
comboxGoods.setAmount(finalPrice * comboxGoods.getQty());
comboxGoods.setCustomerCode(comboxGoodsSkuProductBean.getCustomerCode());
comboxGoods.setFinalPrice(finalPrice);
comboxGoods.setWeightType(CommonsConstant.WEIGHT_PRODUCT.equals(productBeanDTO.getWeightType()));
comboxGoods.setUnit(comboxGoodsSkuProductBean.getUnit());
comboxGoods.setWeight(comboxGoodsSkuProductBean.getWeight());
comboxGoods.setTax(comboxGoodsSkuProductBean.getTax());
comboxGoods.setTaxId(comboxGoodsSkuProductBean.getTaxId());
//套餐内商品加料
if(CollectionUtils.isNotEmpty(comboxGoods.getProductMaterialList())){
if (CollectionUtils.isNotEmpty(productBeanDTO.getAdditionalGroupList())) {
List<ProductBeanDTO.ProductGroupType.GroupDetailType> groupDetail = productBeanDTO.getAdditionalGroupList().get(0).getGroupDetail();
ProductBeanDTO.ProductGroupType.GroupDetailType groupDetailType1 = null;
for (com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods.MaterialGoods productMaterialList :comboxGoods.getProductMaterialList()){
for (ProductBeanDTO.ProductGroupType.GroupDetailType groupDetailType : groupDetail){
if(groupDetailType.getProductId().equals(productMaterialList.getSpuId())){
groupDetailType1 = groupDetailType;
break;
}
}
}
List<com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods.MaterialGoods> productMaterialList = new ArrayList<>();
com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods.MaterialGoods materialGoods = new com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods.MaterialGoods();
materialGoods.setSpuId(comboxGoods.getSpuId());
materialGoods.setAmount(groupDetailType1.getProductPrice().longValue());
materialGoods.setFinalPrice(groupDetailType1.getProductFinalPrice().longValue());
materialGoods.setOriginalAmount(groupDetailType1.getProductPrice().longValue());
materialGoods.setOriginalPrice(groupDetailType1.getProductPrice().longValue());
materialGoods.setSpuName(groupDetailType1.getProductName());
productMaterialList.add(materialGoods);
comboxGoods.setProductMaterialList(productMaterialList);
}
}
}
} }
\ No newline at end of file
package cn.freemud.entities.dto.product;
import lombok.Data;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: ProductSpecAttrValueGroupType
* @Package cn.freemud.entities.dto.product
* @Description:
* @author: ping1.wu
* @date: 2020/9/27 10:54
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Data
public class ProductSpecAttrValueGroupType {
//规格小类id
private String specValueId;
//规格小类属性名称
private String name;
//规格小类属性编号
private String qty;
}
...@@ -3,6 +3,8 @@ package cn.freemud.entities.dto.product; ...@@ -3,6 +3,8 @@ package cn.freemud.entities.dto.product;
import com.freemud.application.sdk.api.productcenter.domain.ProductBeanDTO; import com.freemud.application.sdk.api.productcenter.domain.ProductBeanDTO;
import lombok.Data; import lombok.Data;
import java.util.Map;
/** /**
* All rights Reserved, Designed By www.freemud.cn * All rights Reserved, Designed By www.freemud.cn
* *
...@@ -25,4 +27,6 @@ public class ValiadShopProductResult { ...@@ -25,4 +27,6 @@ public class ValiadShopProductResult {
private ProductBeanDTO productType; private ProductBeanDTO productType;
private String uuid; private String uuid;
private Map<String,ProductBeanDTO> subProductTypeMap;
} }
...@@ -19,6 +19,7 @@ import java.util.List; ...@@ -19,6 +19,7 @@ import java.util.List;
@Data @Data
public class ValidateSkuProductType { public class ValidateSkuProductType {
private String skuId;
private String productId; private String productId;
private Integer price; private Integer price;
private Integer markUpPrice; private Integer markUpPrice;
...@@ -26,4 +27,6 @@ public class ValidateSkuProductType { ...@@ -26,4 +27,6 @@ public class ValidateSkuProductType {
private Long productGroupId; private Long productGroupId;
private List<ProductAttributeValueType> attributeList; private List<ProductAttributeValueType> attributeList;
private ProductSpecAttrValueGroupType productSpecAttrValueGroupType;
} }
...@@ -3,6 +3,7 @@ package cn.freemud.entities.dto.shoppingCart; ...@@ -3,6 +3,7 @@ package cn.freemud.entities.dto.shoppingCart;
import cn.freemud.entities.dto.OrderProductAddInfo; import cn.freemud.entities.dto.OrderProductAddInfo;
import cn.freemud.entities.dto.activity.ActivityDiscountsDto; import cn.freemud.entities.dto.activity.ActivityDiscountsDto;
import cn.freemud.entities.dto.activity.ShareDiscountActivityDto; import cn.freemud.entities.dto.activity.ShareDiscountActivityDto;
import cn.freemud.entities.vo.CartGoods;
import cn.freemud.entities.vo.SubtractStockVO; import cn.freemud.entities.vo.SubtractStockVO;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import lombok.Builder; import lombok.Builder;
...@@ -245,6 +246,8 @@ public class ShoppingCartGoodsDto { ...@@ -245,6 +246,8 @@ public class ShoppingCartGoodsDto {
*/ */
private List<CartGoodsDetailDto.CartGoodsExtra> extraList = new ArrayList<>(0); private List<CartGoodsDetailDto.CartGoodsExtra> extraList = new ArrayList<>(0);
private List<CartGoods.SpecialExtra> specialExtra = new ArrayList<>();
/** /**
* 当前商品享受的促销活动 * 当前商品享受的促销活动
*/ */
......
...@@ -124,6 +124,11 @@ public class CartGoods { ...@@ -124,6 +124,11 @@ public class CartGoods {
private List<CartGoodsExtra> extra; private List<CartGoodsExtra> extra;
/** /**
* 麦咖啡定制属性
*/
private List<SpecialExtra> specialExtra;
/**
* 创建时间(mili) * 创建时间(mili)
*/ */
private long createTimeMili = System.currentTimeMillis(); private long createTimeMili = System.currentTimeMillis();
...@@ -193,13 +198,20 @@ public class CartGoods { ...@@ -193,13 +198,20 @@ public class CartGoods {
*/ */
private List<MaterialGoods> productMaterialList; private List<MaterialGoods> productMaterialList;
@Data
public final static class CartGoodsExtra {
/** /**
* 麦咖啡特定属性入机code * 属性Id
*/ */
private String specialCode; private String attributeId;
/**
* 属性名
*/
private String attributeName;
}
@Data @Data
public final static class CartGoodsExtra { public final static class SpecialExtra {
/** /**
* 属性Id * 属性Id
*/ */
...@@ -221,6 +233,7 @@ public class CartGoods { ...@@ -221,6 +233,7 @@ public class CartGoods {
* 单规格spuId,多规格skuId * 单规格spuId,多规格skuId
*/ */
private String goodsId; private String goodsId;
private String spuId;
private String skuId; private String skuId;
private String skuName; private String skuName;
/** /**
...@@ -275,6 +288,11 @@ public class CartGoods { ...@@ -275,6 +288,11 @@ public class CartGoods {
* 配料或属性 * 配料或属性
*/ */
private List<CartGoodsExtra> extra; private List<CartGoodsExtra> extra;
/**
* 麦咖啡特定属性
*/
private List<SpecialExtra> specialExtra;
/** /**
* 1:称重菜 * 1:称重菜
*/ */
......
...@@ -35,6 +35,8 @@ public class ComboxGoodsRequestVo { ...@@ -35,6 +35,8 @@ public class ComboxGoodsRequestVo {
*/ */
List<CartGoods.CartGoodsExtra> extra; List<CartGoods.CartGoodsExtra> extra;
private List<CartGoods.SpecialExtra> specialExtra;
/** /**
* 麦咖啡多规格商品加料 * 麦咖啡多规格商品加料
*/ */
......
...@@ -999,6 +999,7 @@ public class ShoppingCartMCoffeeServiceImpl { ...@@ -999,6 +999,7 @@ public class ShoppingCartMCoffeeServiceImpl {
} }
cartGoods.setGoodsType(goodsType); cartGoods.setGoodsType(goodsType);
cartGoods.setExtra(addShoppingCartGoodsRequestVo.getExtra()); cartGoods.setExtra(addShoppingCartGoodsRequestVo.getExtra());
cartGoods.setSpecialExtra(addShoppingCartGoodsRequestVo.getSpecialExtra());
cartGoods.setNodeId(addShoppingCartGoodsRequestVo.getNodeId()); cartGoods.setNodeId(addShoppingCartGoodsRequestVo.getNodeId());
cartGoods.setCategoryName(addShoppingCartGoodsRequestVo.getCategoryName()); cartGoods.setCategoryName(addShoppingCartGoodsRequestVo.getCategoryName());
List<CartGoods.ComboxGoods> productComboList = new ArrayList<>(); List<CartGoods.ComboxGoods> productComboList = new ArrayList<>();
...@@ -1009,8 +1010,10 @@ public class ShoppingCartMCoffeeServiceImpl { ...@@ -1009,8 +1010,10 @@ public class ShoppingCartMCoffeeServiceImpl {
CartGoods.ComboxGoods productCombox = new CartGoods.ComboxGoods(); CartGoods.ComboxGoods productCombox = new CartGoods.ComboxGoods();
productCombox.setGoodsId(vo.getSkuId()); productCombox.setGoodsId(vo.getSkuId());
productCombox.setSkuId(vo.getSkuId()); productCombox.setSkuId(vo.getSkuId());
productCombox.setSpuId(vo.getSpuId());
productCombox.setQty(vo.getQty()); productCombox.setQty(vo.getQty());
productCombox.setExtra(vo.getExtra()); productCombox.setExtra(vo.getExtra());
productCombox.setSpecialExtra(vo.getSpecialExtra());
//加料商品集 //加料商品集
if (CollectionUtils.isNotEmpty(vo.getProductMaterialList())) { if (CollectionUtils.isNotEmpty(vo.getProductMaterialList())) {
List<CartGoods.MaterialGoods> comboxMaterialGoodsList = new ArrayList<>(); List<CartGoods.MaterialGoods> comboxMaterialGoodsList = new ArrayList<>();
...@@ -1029,8 +1032,10 @@ public class ShoppingCartMCoffeeServiceImpl { ...@@ -1029,8 +1032,10 @@ public class ShoppingCartMCoffeeServiceImpl {
CartGoods.ComboxGoods productCombox = new CartGoods.ComboxGoods(); CartGoods.ComboxGoods productCombox = new CartGoods.ComboxGoods();
productCombox.setGoodsId(vo.getSkuId()); productCombox.setGoodsId(vo.getSkuId());
productCombox.setSkuId(vo.getSkuId()); productCombox.setSkuId(vo.getSkuId());
productCombox.setSpuId(vo.getSpuId());
productCombox.setQty(vo.getQty()); productCombox.setQty(vo.getQty());
productCombox.setExtra(vo.getExtra()); productCombox.setExtra(vo.getExtra());
productCombox.setSpecialExtra(vo.getSpecialExtra());
productCombox.setProductGroupId(StringUtils.isEmpty(vo.getProductGroupId()) ? null : Long.parseLong(vo.getProductGroupId())); productCombox.setProductGroupId(StringUtils.isEmpty(vo.getProductGroupId()) ? null : Long.parseLong(vo.getProductGroupId()));
//加料商品集 //加料商品集
if (CollectionUtils.isNotEmpty(vo.getProductMaterialList())) { if (CollectionUtils.isNotEmpty(vo.getProductMaterialList())) {
...@@ -1168,13 +1173,11 @@ public class ShoppingCartMCoffeeServiceImpl { ...@@ -1168,13 +1173,11 @@ public class ShoppingCartMCoffeeServiceImpl {
} }
private BaseResponse<CheckCartRequest> checkAllCartGoodsForMCoffee(CheckCartRequest checkCartRequest) { private BaseResponse<CheckCartRequest> checkAllCartGoodsForMCoffee(CheckCartRequest checkCartRequest) {
// ShoppingCartAdapter shoppingCartAdapter = SDKCommonBaseContextWare.getBean(ShoppingCartAdapter.class);
ProductService productService = SDKCommonBaseContextWare.getBean(ProductService.class);
try { try {
ValidateShopProductRequest validateShopProductRequest = shoppingCartConvertAdapter.getValidateShopProductRequest(checkCartRequest); ValidateShopProductRequest validateShopProductRequest = shoppingCartConvertAdapter.getValidateShopProductRequest(checkCartRequest);
ProductBaseResponse<ValiadShopProductResponse> valiadResponse = productClient.validateShopProductAboutReason(validateShopProductRequest); ProductBaseResponse<ValiadShopProductResponse> valiadResponse = productClient.validateShopProductAboutReason(validateShopProductRequest);
if (valiadResponse == null || !CartResponseConstant.SUCCESS.getCode().equals(valiadResponse.getErrcode()) || valiadResponse.getData()==null) { if (valiadResponse == null || !CartResponseConstant.SUCCESS.getCode().equals(valiadResponse.getErrcode().toString()) || valiadResponse.getData()==null) {
checkCartRequest.getCartGoodsList().clear(); checkCartRequest.getCartGoodsList().clear();
checkCartRequest.getShoppingCartGoodsResponseVo().setChanged(true); checkCartRequest.getShoppingCartGoodsResponseVo().setChanged(true);
checkCartRequest.getShoppingCartGoodsResponseVo().setToastMsg(com.freemud.sdk.api.assortment.shoppingcart.constant.ShoppingCartConstant.SHOPPING_CART_INVALIAD_GOODS); checkCartRequest.getShoppingCartGoodsResponseVo().setToastMsg(com.freemud.sdk.api.assortment.shoppingcart.constant.ShoppingCartConstant.SHOPPING_CART_INVALIAD_GOODS);
...@@ -1232,14 +1235,19 @@ public class ShoppingCartMCoffeeServiceImpl { ...@@ -1232,14 +1235,19 @@ public class ShoppingCartMCoffeeServiceImpl {
setToastMsgIfNotExist(checkCartRequest.getShoppingCartGoodsResponseVo(), com.freemud.sdk.api.assortment.shoppingcart.constant.ShoppingCartConstant.SHOPPING_CART_GOODS_CHANGE); setToastMsgIfNotExist(checkCartRequest.getShoppingCartGoodsResponseVo(), com.freemud.sdk.api.assortment.shoppingcart.constant.ShoppingCartConstant.SHOPPING_CART_GOODS_CHANGE);
checkCartRequest.getCartGoodsList().removeIf(k -> StringUtils.isEmpty(k.getCartGoodsUid())); checkCartRequest.getCartGoodsList().removeIf(k -> StringUtils.isEmpty(k.getCartGoodsUid()));
} }
List<ProductBeanDTO> productList = validateResult.getSuccessList().stream().map(ValiadShopProductResult::getProductType).collect(Collectors.toList());
for (com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods cartGoods : checkCartRequest.getCartGoodsList()) { for (com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods cartGoods : checkCartRequest.getCartGoodsList()) {
// 当goodsId为空或商品是商品券时直接跳过 // 当goodsId为空或商品是商品券时直接跳过
if (StringUtils.isEmpty(cartGoods.getGoodsId()) || Objects.equals(cartGoods.getGoodsType(), com.freemud.sdk.api.assortment.shoppingcart.constant.GoodsTypeEnum.COUPON_GOODS.getGoodsType())) { if (StringUtils.isEmpty(cartGoods.getGoodsId()) || Objects.equals(cartGoods.getGoodsType(), com.freemud.sdk.api.assortment.shoppingcart.constant.GoodsTypeEnum.COUPON_GOODS.getGoodsType())) {
continue; continue;
} }
shoppingCartConvertAdapter.updateCartGoodsInfoForMCoffee(cartGoods, productList); for (ValiadShopProductResult valiadShopProductResult : validateResult.getSuccessList()){
ProductBeanDTO productType = valiadShopProductResult.getProductType();
if(ObjectUtils.equals(productType.getPid(), cartGoods.getSpuId())){
Map<String,ProductBeanDTO> subProductTypeMap = valiadShopProductResult.getSubProductTypeMap();
shoppingCartConvertAdapter.updateCartGoodsInfo(cartGoods, productType,subProductTypeMap);
break;
}
}
} }
//校验商品券是否有当前点餐方式 //校验商品券是否有当前点餐方式
// cartGoodsStates = updateSpqCartGoodsInfo(checkCartRequest.getCartGoodsList(), checkCartRequest.getOrderWay(), checkCartRequest.getPartnerId(), checkCartRequest.getTrackingNo(), cartGoodsStates // cartGoodsStates = updateSpqCartGoodsInfo(checkCartRequest.getCartGoodsList(), checkCartRequest.getOrderWay(), checkCartRequest.getPartnerId(), checkCartRequest.getTrackingNo(), cartGoodsStates
......
...@@ -372,10 +372,9 @@ public class CalculationServiceImpl { ...@@ -372,10 +372,9 @@ public class CalculationServiceImpl {
calculationDiscountGoods.setOriginalPrice(originalPrice); calculationDiscountGoods.setOriginalPrice(originalPrice);
calculationDiscountGoods.setMemberDiscount(memberDiscount); calculationDiscountGoods.setMemberDiscount(memberDiscount);
ArrayList<ActivityCalculationDiscountRequestDto.CalculationDiscountGoods.Material> materials = new ArrayList<>();
//可选搭配 //可选搭配
if (cartGoods != null && CollectionUtils.isNotEmpty(cartGoods.getProductGroupList())) { if (cartGoods != null && CollectionUtils.isNotEmpty(cartGoods.getProductGroupList())) {
ArrayList<ActivityCalculationDiscountRequestDto.CalculationDiscountGoods.Material> materials = new ArrayList<>();
for (CartGoods.ComboxGoods materialGoods : cartGoods.getProductGroupList()) { for (CartGoods.ComboxGoods materialGoods : cartGoods.getProductGroupList()) {
ActivityCalculationDiscountRequestDto.CalculationDiscountGoods.Material material = new ActivityCalculationDiscountRequestDto.CalculationDiscountGoods.Material(); ActivityCalculationDiscountRequestDto.CalculationDiscountGoods.Material material = new ActivityCalculationDiscountRequestDto.CalculationDiscountGoods.Material();
material.setType(2); material.setType(2);
...@@ -384,9 +383,37 @@ public class CalculationServiceImpl { ...@@ -384,9 +383,37 @@ public class CalculationServiceImpl {
material.setOriginalPrice(materialGoods.getFinalPrice()); material.setOriginalPrice(materialGoods.getFinalPrice());
materials.add(material); materials.add(material);
} }
calculationDiscountGoods.setSmallMaterial(materials);
} }
//固定商品
if (cartGoods != null && CollectionUtils.isNotEmpty(cartGoods.getProductComboList())) {
for (CartGoods.ComboxGoods materialGoods : cartGoods.getProductComboList()) {
//加料
if (CollectionUtils.isNotEmpty(materialGoods.getProductMaterialList())) {
for (CartGoods.MaterialGoods materialGoods2 : materialGoods.getProductMaterialList()) {
ActivityCalculationDiscountRequestDto.CalculationDiscountGoods.Material material = new ActivityCalculationDiscountRequestDto.CalculationDiscountGoods.Material();
material.setType(1);
material.setGoodsId(materialGoods2.getSpuId());
material.setGoodsQuantity(cartGoods.getQty());
material.setOriginalPrice(materialGoods2.getFinalPrice());
materials.add(material);
}
}
}
}
//加料
if (cartGoods != null && CollectionUtils.isNotEmpty(cartGoods.getProductMaterialList())) {
for (CartGoods.MaterialGoods materialGoods : cartGoods.getProductMaterialList()) {
ActivityCalculationDiscountRequestDto.CalculationDiscountGoods.Material material = new ActivityCalculationDiscountRequestDto.CalculationDiscountGoods.Material();
material.setType(1);
material.setGoodsId(materialGoods.getSpuId());
material.setGoodsQuantity(cartGoods.getQty());
material.setOriginalPrice(materialGoods.getFinalPrice());
materials.add(material);
}
}
calculationDiscountGoods.setSmallMaterial(materials);
calculationDiscountGoodsList.add(calculationDiscountGoods); calculationDiscountGoodsList.add(calculationDiscountGoods);
// //累加需加入计算的商品 // //累加需加入计算的商品
......
...@@ -60,10 +60,6 @@ public class MCoffeeAddGoodsRequestVo { ...@@ -60,10 +60,6 @@ public class MCoffeeAddGoodsRequestVo {
private String spuId; private String spuId;
private String skuId; private String skuId;
/**
* 商品额外的属性
*/
private List<CartGoods.CartGoodsExtra> extra;
private String version; private String version;
...@@ -76,6 +72,10 @@ public class MCoffeeAddGoodsRequestVo { ...@@ -76,6 +72,10 @@ public class MCoffeeAddGoodsRequestVo {
*/ */
private String categoryName; private String categoryName;
/** /**
* 商品额外的属性
*/
private List<CartGoods.CartGoodsExtra> extra;
/**
* 套餐固定商品 * 套餐固定商品
*/ */
private List<ComboxGoodsRequestVo> productComboList; private List<ComboxGoodsRequestVo> productComboList;
...@@ -90,9 +90,9 @@ public class MCoffeeAddGoodsRequestVo { ...@@ -90,9 +90,9 @@ public class MCoffeeAddGoodsRequestVo {
private List<MaterialRequestVo> productMaterialList; private List<MaterialRequestVo> productMaterialList;
/** /**
* 麦咖啡特定属性入机code * 麦咖啡定制属性
*/ */
private String specialCode; private List<CartGoods.SpecialExtra> specialExtra;
private String appType; private String appType;
......
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