Commit c55f09cd by xiaoer.li@freemud.com

Merge remote-tracking branch 'remotes/origin/feature/1.9.32_商品加料' into qa

# Conflicts:
#	assortment-shoppingcart-sdk/pom.xml
#	shopping-cart-application-service/pom.xml
parents 26507e47 975fba9c
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<artifactId>assortment-shoppingcart-sdk</artifactId> <artifactId>assortment-shoppingcart-sdk</artifactId>
<version>1.1.5-SNAPSHOT</version> <version>orderClients</version>
<dependencies> <dependencies>
<dependency> <dependency>
...@@ -42,7 +42,7 @@ ...@@ -42,7 +42,7 @@
<dependency> <dependency>
<groupId>com.freemud.application.service.sdk</groupId> <groupId>com.freemud.application.service.sdk</groupId>
<artifactId>productcenter-sdk</artifactId> <artifactId>productcenter-sdk</artifactId>
<version>3.2.RELEASE</version> <version>3.5.4-SNAPSHOT</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency> <dependency>
...@@ -54,7 +54,7 @@ ...@@ -54,7 +54,7 @@
<dependency> <dependency>
<groupId>com.freemud.application.service.sdk</groupId> <groupId>com.freemud.application.service.sdk</groupId>
<artifactId>sdk-common-base</artifactId> <artifactId>sdk-common-base</artifactId>
<version>1.4.1-SNAPSHOT</version> <version>1.4.4-SNAPSHOT</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency> <dependency>
......
...@@ -289,6 +289,7 @@ public class ShoppingCartAdapter { ...@@ -289,6 +289,7 @@ public class ShoppingCartAdapter {
skuSpecName = StringUtils.join(skuSpecValus, "/"); skuSpecName = StringUtils.join(skuSpecValus, "/");
} }
String attributeName = attributes.get(ATTRIBUTENAME) == null ? "" : attributes.get(ATTRIBUTENAME); String attributeName = attributes.get(ATTRIBUTENAME) == null ? "" : attributes.get(ATTRIBUTENAME);
//购物车小标题
cartGoods.setSubName(StringUtils.isNotEmpty(skuSpecName) && StringUtils.isNotEmpty(attributeName) ? cartGoods.setSubName(StringUtils.isNotEmpty(skuSpecName) && StringUtils.isNotEmpty(attributeName) ?
skuSpecName + "/" + attributeName : skuSpecName + attributeName); skuSpecName + "/" + attributeName : skuSpecName + attributeName);
...@@ -320,12 +321,64 @@ public class ShoppingCartAdapter { ...@@ -320,12 +321,64 @@ public class ShoppingCartAdapter {
cartGoods.setWeight(isSkuProduct ? skuProduct.getWeight() : spuProduct.getWeight()); cartGoods.setWeight(isSkuProduct ? skuProduct.getWeight() : spuProduct.getWeight());
cartGoods.setUnit(isSkuProduct ? skuProduct.getUnit() : spuProduct.getUnit()); cartGoods.setUnit(isSkuProduct ? skuProduct.getUnit() : spuProduct.getUnit());
cartGoods.setWeightType(CommonsConstant.WEIGHT_PRODUCT.equals(spuProduct.getWeightType())); cartGoods.setWeightType(CommonsConstant.WEIGHT_PRODUCT.equals(spuProduct.getWeightType()));
// todo 设置加料
this.checkMaterialProduct(cartGoods, spuProduct);
} catch (Exception ex) { } catch (Exception ex) {
ErrorLog.infoConvertJson(this.getClass(),"updateCartGoodsInfoNew_Error",ex); ErrorLog.infoConvertJson(this.getClass(), "updateCartGoodsInfoNew_Error", ex);
cartGoods.setCartGoodsUid(null); cartGoods.setCartGoodsUid(null);
} }
} }
/**
* 单独处理加料
*
* @param cartGoods
* @param spuProduct
*/
private void checkMaterialProduct(CartGoods cartGoods, ProductBeanDTO spuProduct) {
if (CollectionUtils.isEmpty(cartGoods.getProductMaterialList())) return;
//加料信息为空
if (CollectionUtils.isEmpty(spuProduct.getAdditionalGroupList())) return;
//提取加料信息
List<ProductBeanDTO.ProductGroupType.GroupDetailType> groupDetail = spuProduct.getAdditionalGroupList().get(0).getGroupDetail();
HashMap<String, ProductBeanDTO.ProductGroupType.GroupDetailType> materialHash = new HashMap<>();
for (ProductBeanDTO.ProductGroupType.GroupDetailType groupDetailType : groupDetail) {
materialHash.put(groupDetailType.getProductId(), groupDetailType);
}
ArrayList<CartGoods.MaterialGoods> materialGoodsList = new ArrayList<>();
Long materialAmount = 0L;
Long originalMaterAmount = 0L;
String materialSubName = cartGoods.getSubName();
for (CartGoods.MaterialGoods materialGoods : cartGoods.getProductMaterialList()) {
ProductBeanDTO.ProductGroupType.GroupDetailType detail = materialHash.get(materialGoods.getSpuId());
if (detail == null) continue;
CartGoods.MaterialGoods material = new CartGoods.MaterialGoods();
material.setSpuName(detail.getProductName());
material.setSpuId(detail.getProductId());
//行单价 \ 行总价
material.setFinalPrice(detail.getProductFinalPrice().longValue());
material.setAmount(detail.getProductFinalPrice().longValue());
//原行单价*数量
material.setOriginalAmount(detail.getProductFinalPrice().longValue() * cartGoods.getQty());
material.setOriginalPrice(detail.getProductFinalPrice().longValue());
materialGoodsList.add(material);
materialAmount += detail.getProductFinalPrice().longValue() * cartGoods.getQty();
originalMaterAmount += detail.getProductFinalPrice().longValue() * cartGoods.getQty();
;
materialSubName = materialSubName + "/" + detail.getProductName();
}
//设置购物车行记录
cartGoods.setProductMaterialList(materialGoodsList);
//加料行记录现价总价
cartGoods.setMaterialAmount(materialAmount);
//加料行记录原价总价
cartGoods.setOriginalMaterialAmount(originalMaterAmount);
cartGoods.setOriginalAmount(cartGoods.getOriginalAmount() + originalMaterAmount);
cartGoods.setSubName(materialSubName);
}
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) {
// 可选商品详情 // 可选商品详情
Optional<ProductBeanDTO> firstProduct = productBeans.stream().filter(p -> ObjectUtils.equals(p.getPid(), comboxGoods.getGoodsId())).findFirst(); Optional<ProductBeanDTO> firstProduct = productBeans.stream().filter(p -> ObjectUtils.equals(p.getPid(), comboxGoods.getGoodsId())).findFirst();
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
package com.freemud.sdk.api.assortment.shoppingcart.domain; package com.freemud.sdk.api.assortment.shoppingcart.domain;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
...@@ -70,12 +71,17 @@ public class CartGoods { ...@@ -70,12 +71,17 @@ public class CartGoods {
* 购物车一行商品的原总价 * 购物车一行商品的原总价
*/ */
private Long originalAmount; private Long originalAmount;
//购物车一行小料商品的原总价
private Long originalMaterialAmount;
/** /**
* 购物车一行商品的现总价 * 购物车一行商品的现总价
*/ */
private Long amount; private Long amount;
/** /**
* 购物车加料商品总价
*/
private Long materialAmount;
/**
* 购物车一行商品的数量 * 购物车一行商品的数量
*/ */
private Integer qty; private Integer qty;
...@@ -161,6 +167,10 @@ public class CartGoods { ...@@ -161,6 +167,10 @@ public class CartGoods {
*/ */
private List<ComboxGoods> productGroupList; private List<ComboxGoods> productGroupList;
/**
* 商品加料
*/
private List<MaterialGoods> productMaterialList;
@Data @Data
public final static class CartGoodsExtra { public final static class CartGoodsExtra {
...@@ -209,6 +219,11 @@ public class CartGoods { ...@@ -209,6 +219,11 @@ public class CartGoods {
* 购物车一行商品的现价 * 购物车一行商品的现价
*/ */
private Long amount; private Long amount;
/**
* 加料商品商品价格
*/
private Long materialAmount;
/** /**
* 购物车一行商品的数量 * 购物车一行商品的数量
*/ */
...@@ -280,4 +295,32 @@ public class CartGoods { ...@@ -280,4 +295,32 @@ public class CartGoods {
public int hashCode() { public int hashCode() {
return Objects.hash(super.hashCode(), goodsId, goodsType, spuId, skuId, specProductId, originalPrice, packPrice, name, subName, pic, extra); return Objects.hash(super.hashCode(), goodsId, goodsType, spuId, skuId, specProductId, originalPrice, packPrice, name, subName, pic, extra);
} }
@Data
@NoArgsConstructor
public static class MaterialGoods {
/**
* 加料Id
*/
private String spuId;
/**
* 加料名称
*/
private String spuName;
/**
* 购物车一行商品的现单价
*/
private Long finalPrice;
/**
* 购物车一行商品的原单价
*/
private Long originalAmount;
private Long originalPrice;
/**
* 购物车一行商品的总现价
*/
private Long amount;
}
} }
...@@ -155,7 +155,7 @@ public interface ShoppingCartBaseService { ...@@ -155,7 +155,7 @@ public interface ShoppingCartBaseService {
} }
checkCartRequest.getCartGoodsList().removeIf(k -> StringUtils.isEmpty(k.getCartGoodsUid())); checkCartRequest.getCartGoodsList().removeIf(k -> StringUtils.isEmpty(k.getCartGoodsUid()));
} }
// Todo : 验证的商品信息
List<ProductBeanDTO> productList = valiadResult.getSuccessList().stream().map(ValiadShopProductResult::getProductType).collect(Collectors.toList()); List<ProductBeanDTO> productList = valiadResult.getSuccessList().stream().map(ValiadShopProductResult::getProductType).collect(Collectors.toList());
CartGoodsStates cartGoodsStates = new CartGoodsStates(); CartGoodsStates cartGoodsStates = new CartGoodsStates();
for (CartGoods cartGoods : checkCartRequest.getCartGoodsList()) { for (CartGoods cartGoods : checkCartRequest.getCartGoodsList()) {
......
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
<dependency> <dependency>
<groupId>com.freemud.application.service.sdk</groupId> <groupId>com.freemud.application.service.sdk</groupId>
<artifactId>sdk-common-base</artifactId> <artifactId>sdk-common-base</artifactId>
<version>1.3.9-SNAPSHOT</version> <version>1.4.4-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.freemud.application.service.sdk</groupId> <groupId>com.freemud.application.service.sdk</groupId>
...@@ -45,7 +45,7 @@ ...@@ -45,7 +45,7 @@
<dependency> <dependency>
<groupId>cn.freemud</groupId> <groupId>cn.freemud</groupId>
<artifactId>assortment-shoppingcart-sdk</artifactId> <artifactId>assortment-shoppingcart-sdk</artifactId>
<version>1.1.2.RELEASE</version> <version>1.1.8-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.freemud.application.service.sdk</groupId> <groupId>com.freemud.application.service.sdk</groupId>
......
...@@ -111,9 +111,24 @@ public class ShoppingCartConvertAdapter { ...@@ -111,9 +111,24 @@ public class ShoppingCartConvertAdapter {
} else if (cartGoods.isWeightType()) { } else if (cartGoods.isWeightType()) {
cartGoodsDetailDto.setProductType(ProductType.WEIGHT_PRODUCT.getCode()); cartGoodsDetailDto.setProductType(ProductType.WEIGHT_PRODUCT.getCode());
} }
//小料
if (CollectionUtils.isNotEmpty(cartGoods.getProductMaterialList())) {
List<ShoppingCartGoodsDto.CartGoodsDetailDto.MaterialGoods> materialList = new ArrayList<>(0);
for (CartGoods.MaterialGoods materialGoods : cartGoods.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());
materialList.add(goods);
}
cartGoodsDetailDto.setMaterialList(materialList);
}
// 设置总优惠&售价 // 设置总优惠&售价
List<ShoppingCartGoodsDto.CartGoodsDetailDto.CartGoodsExtra> cartGoodsExtras = BeanUtil.convertBeans(cartGoods.getExtra(), ShoppingCartGoodsDto.CartGoodsDetailDto.CartGoodsExtra::new); List<ShoppingCartGoodsDto.CartGoodsDetailDto.CartGoodsExtra> cartGoodsExtras = BeanUtil.convertBeans(cartGoods.getExtra(), ShoppingCartGoodsDto.CartGoodsDetailDto.CartGoodsExtra::new);
cartGoodsDetailDto.setExtraList(cartGoodsExtras); cartGoodsDetailDto.setExtraList(cartGoodsExtras);
//61: 单品买M赠N \ 62:买赠 \ 6:买M赠N
if (ObjectUtils.equals(ActivityTypeEnum.TYPE_61.getCode(), cartGoods.getActivityType()) || ObjectUtils.equals(ActivityTypeEnum.TYPE_6.getCode(), cartGoods.getActivityType()) if (ObjectUtils.equals(ActivityTypeEnum.TYPE_61.getCode(), cartGoods.getActivityType()) || ObjectUtils.equals(ActivityTypeEnum.TYPE_6.getCode(), cartGoods.getActivityType())
|| ObjectUtils.equals(ActivityTypeEnum.TYPE_62.getCode(), cartGoods.getActivityType())) { || ObjectUtils.equals(ActivityTypeEnum.TYPE_62.getCode(), cartGoods.getActivityType())) {
cartGoodsDetailDto.setTotalDiscountAmount(cartGoods.getOriginalAmount().intValue() - cartGoods.getAmount().intValue()); cartGoodsDetailDto.setTotalDiscountAmount(cartGoods.getOriginalAmount().intValue() - cartGoods.getAmount().intValue());
...@@ -358,6 +373,8 @@ public class ShoppingCartConvertAdapter { ...@@ -358,6 +373,8 @@ public class ShoppingCartConvertAdapter {
cartGoods.setCategoryName(addShoppingCartGoodsRequestVo.getCategoryName()); cartGoods.setCategoryName(addShoppingCartGoodsRequestVo.getCategoryName());
List<CartGoods.ComboxGoods> productComboList = new ArrayList<>(); List<CartGoods.ComboxGoods> productComboList = new ArrayList<>();
List<CartGoods.ComboxGoods> productGroupList = new ArrayList<>(); List<CartGoods.ComboxGoods> productGroupList = new ArrayList<>();
List<CartGoods.MaterialGoods> materialGoodsList = new ArrayList<>();
//套餐
if (CollectionUtils.isNotEmpty(addShoppingCartGoodsRequestVo.getProductComboList())) { if (CollectionUtils.isNotEmpty(addShoppingCartGoodsRequestVo.getProductComboList())) {
for (ComboxGoodsRequestVo vo : addShoppingCartGoodsRequestVo.getProductComboList()) { for (ComboxGoodsRequestVo vo : addShoppingCartGoodsRequestVo.getProductComboList()) {
CartGoods.ComboxGoods productCombox = new CartGoods.ComboxGoods(); CartGoods.ComboxGoods productCombox = new CartGoods.ComboxGoods();
...@@ -368,6 +385,7 @@ public class ShoppingCartConvertAdapter { ...@@ -368,6 +385,7 @@ public class ShoppingCartConvertAdapter {
productComboList.add(productCombox); productComboList.add(productCombox);
} }
} }
//固定商品组
if (CollectionUtils.isNotEmpty(addShoppingCartGoodsRequestVo.getProductGroupList())) { if (CollectionUtils.isNotEmpty(addShoppingCartGoodsRequestVo.getProductGroupList())) {
for (ComboxGoodsRequestVo vo : addShoppingCartGoodsRequestVo.getProductGroupList()) { for (ComboxGoodsRequestVo vo : addShoppingCartGoodsRequestVo.getProductGroupList()) {
CartGoods.ComboxGoods productCombox = new CartGoods.ComboxGoods(); CartGoods.ComboxGoods productCombox = new CartGoods.ComboxGoods();
...@@ -379,8 +397,17 @@ public class ShoppingCartConvertAdapter { ...@@ -379,8 +397,17 @@ public class ShoppingCartConvertAdapter {
productGroupList.add(productCombox); productGroupList.add(productCombox);
} }
} }
//加料商品集
if (CollectionUtils.isNotEmpty(addShoppingCartGoodsRequestVo.getProductMaterialList())) {
for (MaterialRequestVo materialRequestVo : addShoppingCartGoodsRequestVo.getProductMaterialList()) {
CartGoods.MaterialGoods materialGoods = new CartGoods.MaterialGoods();
materialGoods.setSpuId(materialRequestVo.getSpuId());
materialGoodsList.add(materialGoods);
}
}
cartGoods.setProductComboList(productComboList); cartGoods.setProductComboList(productComboList);
cartGoods.setProductGroupList(productGroupList); cartGoods.setProductGroupList(productGroupList);
cartGoods.setProductMaterialList(materialGoodsList);
return cartGoods; return cartGoods;
} }
......
package cn.freemud.entities.dto; package cn.freemud.entities.dto;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
...@@ -107,6 +108,10 @@ public class ActivityCalculationDiscountRequestDto { ...@@ -107,6 +108,10 @@ public class ActivityCalculationDiscountRequestDto {
* 例如8折为80 * 例如8折为80
*/ */
private Integer memberDiscount; private Integer memberDiscount;
/**
* 加料
*/
private List<Material> smallMaterial;
@Override @Override
public boolean equals(Object o) { public boolean equals(Object o) {
...@@ -124,5 +129,26 @@ public class ActivityCalculationDiscountRequestDto { ...@@ -124,5 +129,26 @@ public class ActivityCalculationDiscountRequestDto {
public int hashCode() { public int hashCode() {
return Objects.hash(super.hashCode(), goodsId, category, originalPrice); return Objects.hash(super.hashCode(), goodsId, category, originalPrice);
} }
@Data
@NoArgsConstructor
static public class Material {
/**
* 加料商品ID
*/
private String goodsId;
/**
* 加料数量
*/
private Integer goodsQuantity;
/**
* 加料单价
*/
private Long originalPrice;
/**
* 1 :小料、2:可选搭配
*/
private int type;
}
} }
} }
...@@ -2,6 +2,7 @@ package cn.freemud.entities.dto; ...@@ -2,6 +2,7 @@ package cn.freemud.entities.dto;
import cn.freemud.entities.vo.SubtractStockVO; import cn.freemud.entities.vo.SubtractStockVO;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -352,6 +353,7 @@ public class ActivityCalculationDiscountResponseDto { ...@@ -352,6 +353,7 @@ public class ActivityCalculationDiscountResponseDto {
private Integer apportionAmount; private Integer apportionAmount;
private List<ApportionDetails> apportionDetails; private List<ApportionDetails> apportionDetails;
private List<Material> smallMaterial;
/** /**
* 购物车行记录 * 购物车行记录
*/ */
...@@ -388,6 +390,41 @@ public class ActivityCalculationDiscountResponseDto { ...@@ -388,6 +390,41 @@ public class ActivityCalculationDiscountResponseDto {
*/ */
private Long activityApportionAmount; private Long activityApportionAmount;
} }
@Data
@NoArgsConstructor
public static class Material {
/**
* 均摊金额
*/
private Integer apportionAmount;
/**
* 购物车行记录
*/
private String cartGoodsUid;
/**
* 商品id
*/
private String goodsId;
/**
* 商品数量
*/
private Integer goodsQuantity;
/**
* 赠送商品现价(单位:分)(加价换购时表示需要加的价格)
*/
private Long nowPrice;
/**
* 商品原价(分)
*/
private Long originalPrice;
private List<ApportionDetails> apportionDetails;
}
} }
} }
......
...@@ -240,6 +240,10 @@ public class ShoppingCartGoodsDto { ...@@ -240,6 +240,10 @@ public class ShoppingCartGoodsDto {
* 套餐子商品 * 套餐子商品
*/ */
private List<CartGoodsDetailDto> comboProducts; private List<CartGoodsDetailDto> comboProducts;
/**
* 加料商品
*/
private List<CartGoodsDetailDto.MaterialGoods> materialList = new ArrayList<>(0);
@Data @Data
public final static class CartGoodsExtra { public final static class CartGoodsExtra {
...@@ -253,6 +257,35 @@ public class ShoppingCartGoodsDto { ...@@ -253,6 +257,35 @@ public class ShoppingCartGoodsDto {
private String attributeName; private String attributeName;
} }
@Data
public static class MaterialGoods {
/**
* 加料商品ID
*/
private String spuId;
private String spuName;
/**
* 商品行记录:当前元售价
*/
private Long originalPrice;
/**
* 商品行记录:当前售价
*/
private Long salePrice;
/**
* 小料商品的数量
*/
private Integer qty;
/**
* 商品行优惠总金额=数量*单个商品优惠金额
*/
private Integer totalDiscountAmount;
/**
* 当前商品享受的促销活动
*/
private List<ActivityDiscountsDto> activityDiscountsDtos;
}
/** /**
* 获取extras attributeNames * 获取extras attributeNames
*/ */
......
...@@ -58,12 +58,15 @@ public class AddShoppingCartGoodsRequestVo extends BaseRequestVo{ ...@@ -58,12 +58,15 @@ public class AddShoppingCartGoodsRequestVo extends BaseRequestVo{
*/ */
private List<ComboxGoodsRequestVo> productGroupList; private List<ComboxGoodsRequestVo> productGroupList;
/**
* 加料
*/
private List<MaterialRequestVo> productMaterialList;
private String appType; private String appType;
private String tableNumber; private String tableNumber;
/** /**
* 数量 * 数量
*/ */
private Integer qty; private Integer qty;
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
package cn.freemud.entities.vo; package cn.freemud.entities.vo;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
...@@ -59,29 +60,33 @@ public class CartGoods { ...@@ -59,29 +60,33 @@ public class CartGoods {
*/ */
private String specProductId; private String specProductId;
/** /**
* 购物车一行商品的原单 * 购物车一行商品的原单
*/ */
private Long originalPrice; private Long originalPrice;
/** /**
* 购物车一行商品的现单价 * 购物车一行商品的原单价总金额
*/ */
private Long finalPrice; private Long originalAmount;
//购物车一行小料商品的原总价
private Long originalMaterialAmount;
/** /**
* 购物车一行商品的包装费 * 购物车一行商品的包装费
*/ */
private Long packPrice; private Long packPrice;
/** /**
* 购物车一行商品的原单价
*/
private Long originalAmount;
/**
* 购物车一行商品的现总价 * 购物车一行商品的现总价
*/ */
private Long amount; private Long amount;
/** /**
* 购物车一行商品的现单价
*/
private Long finalPrice;
/**
* 小料总金额
*/
private Long materialAmount;
/**
* 购物车一行商品的数量 * 购物车一行商品的数量
*/ */
private Integer qty; private Integer qty;
...@@ -167,6 +172,10 @@ public class CartGoods { ...@@ -167,6 +172,10 @@ public class CartGoods {
*/ */
private List<ComboxGoods> productGroupList; private List<ComboxGoods> productGroupList;
/**
* 商品加料
*/
private List<MaterialGoods> productMaterialList;
@Data @Data
public final static class CartGoodsExtra { public final static class CartGoodsExtra {
...@@ -364,4 +373,34 @@ public class CartGoods { ...@@ -364,4 +373,34 @@ public class CartGoods {
} }
return hashWeight; return hashWeight;
} }
@Data
@NoArgsConstructor
public static class MaterialGoods {
/**
* 加料Id
*/
private String spuId;
/**
* 加料名称
*/
private String spuName;
/**
* 购物车一行商品的原单价
*/
private Long originalPrice;
/**
* 购物车一行商品的原价*数量
*/
private Long originalAmount;
/**
* 购物车一行商品的现售单价
*/
private Long finalPrice;
/**
* 购物车一行商品的现价*数量
*/
private Long amount;
}
} }
package cn.freemud.entities.vo;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: cn.freemud.entities.vo MaterialRequestVo
* @Description: TDO 描述....
* @author: family
* @date: 2020/7/27
* @Copyright: www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Data
@NoArgsConstructor
public class MaterialRequestVo {
/**
* 加料商品ID
*/
private String spuId;
}
...@@ -17,9 +17,10 @@ public enum GoodsTypeEnum { ...@@ -17,9 +17,10 @@ public enum GoodsTypeEnum {
COMMON_GOODS(1, "正常商品"), COMMON_GOODS(1, "正常商品"),
COUPON_GOODS(2, "商品券"), COUPON_GOODS(2, "商品券"),
SET_MEAL_GOODS(3,"套餐商品"), SET_MEAL_GOODS(3, "套餐商品"),
SKU_GOODS(4, "sku商品"), SKU_GOODS(4, "sku商品"),
SPU_GOODS(5, "spu商品"); SPU_GOODS(5, "spu商品"),
MATERIAL(88, "有加料的商品");
private Integer goodsType; private Integer goodsType;
private String desc; private String desc;
......
...@@ -23,8 +23,9 @@ public enum ShoppingCartPromotionEnum { ...@@ -23,8 +23,9 @@ public enum ShoppingCartPromotionEnum {
SET_MEAL(7, "setMealService"), SET_MEAL(7, "setMealService"),
XY_DISCOUNT(8, "xyDiscountService"), XY_DISCOUNT(8, "xyDiscountService"),
TwoN_DISCOUNT(9, "twoNDiscountService"), TwoN_DISCOUNT(9, "twoNDiscountService"),
BUY_GIFTS(10,"buyAndGiftsPromotionService"), BUY_GIFTS(10, "buyAndGiftsPromotionService"),
MEMBER_DISCOUNT(11,"memberDiscountService"); MEMBER_DISCOUNT(11, "memberDiscountService"),
Material(12, "MaterialPromotionService");
private Integer type; private Integer type;
private String msgType; private String msgType;
......
...@@ -248,7 +248,6 @@ public interface ShoppingCartNewService { ...@@ -248,7 +248,6 @@ public interface ShoppingCartNewService {
* @param userId * @param userId
* @param shoppingCartGoodsResponseVo * @param shoppingCartGoodsResponseVo
* @param allCartGoodsList * @param allCartGoodsList
* @param productBeanListSpuClass
*/ */
default void addNotProductGoods(AddShoppingCartGoodsRequestVo addShoppingCartGoodsRequestVo, CartGoods cartGoods default void addNotProductGoods(AddShoppingCartGoodsRequestVo addShoppingCartGoodsRequestVo, CartGoods cartGoods
, String goodsId, String userId, ShoppingCartGoodsBaseResponseVo shoppingCartGoodsResponseVo, List<CartGoods> allCartGoodsList) { , String goodsId, String userId, ShoppingCartGoodsBaseResponseVo shoppingCartGoodsResponseVo, List<CartGoods> allCartGoodsList) {
......
...@@ -257,7 +257,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -257,7 +257,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
//查询多个商品库存信息 //查询多个商品库存信息
queryManyGoodsStocks(addShoppingCartGoodsRequestVo, productIds, productBeanListSpuClass, skuId, checkQty); queryManyGoodsStocks(addShoppingCartGoodsRequestVo, productIds, productBeanListSpuClass, skuId, checkQty);
ShoppingCartConvertAdapter.setClassification(cartGoods, productBeanListSpuClass); //ShoppingCartConvertAdapter.setClassification(cartGoods, productBeanListSpuClass);
String productName = null; String productName = null;
// 当添加的商品不是商品券时 // 当添加的商品不是商品券时
if (!spuId.startsWith(CommonsConstant.COUPON_PREFIX)) { if (!spuId.startsWith(CommonsConstant.COUPON_PREFIX)) {
...@@ -744,7 +744,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -744,7 +744,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
String cartGoodsUid = cartGoods.getCartGoodsUid(); String cartGoodsUid = cartGoods.getCartGoodsUid();
// 商品不是商品券 // 商品不是商品券
if (!cartGoodsUid.startsWith(CommonsConstant.COUPON_PREFIX)) { if (!cartGoodsUid.startsWith(CommonsConstant.COUPON_PREFIX)) {
this.addCalculationDiscountGoods(calculationDiscountGoodsList, cartGoods.getGoodsId(), cartGoods.getQty(), cartGoods.getFinalPrice(), cartGoods.getMemberDiscount(), cartGoodsUid); //this.addCalculationDiscountGoods(calculationDiscountGoodsList, cartGoods.getGoodsId(), cartGoods.getQty(), cartGoods.getFinalPrice(), cartGoods.getMemberDiscount(), cartGoodsUid);
this.addCalculationDiscountGoods(calculationDiscountGoodsList, cartGoods);
} }
// 商品是商品券 // 商品是商品券
else { else {
...@@ -835,6 +836,38 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -835,6 +836,38 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
} }
/** /**
* 促销增加
*
* @param calculationDiscountGoodsList
* @param cartGoods
*/
private void addCalculationDiscountGoods(List<ActivityCalculationDiscountRequestDto.CalculationDiscountGoods> calculationDiscountGoodsList, CartGoods cartGoods) {
ActivityCalculationDiscountRequestDto.CalculationDiscountGoods calculationDiscountGoods = new ActivityCalculationDiscountRequestDto.CalculationDiscountGoods();
calculationDiscountGoods.setGoodsId(cartGoods.getGoodsId());
calculationDiscountGoods.setCartGoodsUid(cartGoods.getCartGoodsUid());
calculationDiscountGoods.setGoodsQuantity(cartGoods.getQty());
calculationDiscountGoods.setOriginalPrice(cartGoods.getFinalPrice());
calculationDiscountGoods.setMemberDiscount(cartGoods.getMemberDiscount());
//加料
if (CollectionUtils.isNotEmpty(cartGoods.getProductMaterialList())) {
new ActivityCalculationDiscountRequestDto.CalculationDiscountGoods.Material();
ArrayList<ActivityCalculationDiscountRequestDto.CalculationDiscountGoods.Material> materials = new ArrayList<>();
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);
}
this.addCalculationDiscountGoods(calculationDiscountGoodsList, calculationDiscountGoods);
}
/**
* 构建 ActivityCalculationDiscountRequestDto * 构建 ActivityCalculationDiscountRequestDto
* *
* @param partnerId * @param partnerId
...@@ -1059,7 +1092,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -1059,7 +1092,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
shoppingCartGoodsResponseVo.setDiscountDeliveryAmount(deliveryAmount); shoppingCartGoodsResponseVo.setDiscountDeliveryAmount(deliveryAmount);
shoppingCartGoodsResponseVo.setIsDiscountDelivery(false); shoppingCartGoodsResponseVo.setIsDiscountDelivery(false);
}else{ } else {
String desc = DELIVERY_DISCOUNT_DESC3; String desc = DELIVERY_DISCOUNT_DESC3;
shoppingCartGoodsResponseVo.setDeliveryDiscountDesc(String.format(desc, df.format(deliveryAmount.doubleValue() / 100))); shoppingCartGoodsResponseVo.setDeliveryDiscountDesc(String.format(desc, df.format(deliveryAmount.doubleValue() / 100)));
shoppingCartGoodsResponseVo.setDeliveryAmount(deliveryAmount); shoppingCartGoodsResponseVo.setDeliveryAmount(deliveryAmount);
...@@ -1069,6 +1102,12 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -1069,6 +1102,12 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
} }
} }
/**
* 加料
*/
MaterialPromotionService materialPromotionService = (MaterialPromotionService) PromotionFactory.getPromotionService(ShoppingCartPromotionEnum.Material);
materialPromotionService.updateShoppingCartGoodsDiscount(couponPromotionVO, activityQueryDto, calculationDiscountResult, cartGoodsList, shoppingCartGoodsResponseVo, userLoginInfoDto, shoppingCartInfoRequestVo);
} }
/** /**
...@@ -1115,6 +1154,12 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -1115,6 +1154,12 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
//xy折 //xy折
BuyAndGiftsPromotionService buyAndGiftsPromotionService = (BuyAndGiftsPromotionService) PromotionFactory.getPromotionService(ShoppingCartPromotionEnum.BUY_GIFTS); BuyAndGiftsPromotionService buyAndGiftsPromotionService = (BuyAndGiftsPromotionService) PromotionFactory.getPromotionService(ShoppingCartPromotionEnum.BUY_GIFTS);
buyAndGiftsPromotionService.updateShoppingCartGoodsApportion(shoppingCartGoodsResponseVo, calculationDiscountResult, shoppingCartGoodsDto, premiumExchangeActivity, shoppingCartInfoRequestVo); buyAndGiftsPromotionService.updateShoppingCartGoodsApportion(shoppingCartGoodsResponseVo, calculationDiscountResult, shoppingCartGoodsDto, premiumExchangeActivity, shoppingCartInfoRequestVo);
/**
* 设置加料商品行记录
*/
MaterialPromotionService materialPromotionService = (MaterialPromotionService) PromotionFactory.getPromotionService(ShoppingCartPromotionEnum.Material);
materialPromotionService.updateShoppingCartGoodsApportion(shoppingCartGoodsResponseVo, calculationDiscountResult, shoppingCartGoodsDto, premiumExchangeActivity, shoppingCartInfoRequestVo);
} }
......
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