Commit 6ef932f2 by 徐康

Merge branch 'feature/xukang_20210407_麦咖啡p6v3'

# Conflicts:
#	order-application-service/src/main/java/cn/freemud/enums/ActivityTypeEnum.java
#	shopping-cart-application-service/src/main/java/cn/freemud/enums/ActivityTypeEnum.java
#	shopping-cart-application-service/src/main/java/cn/freemud/service/impl/AssortmentSdkService.java
#	shopping-cart-application-service/src/main/java/cn/freemud/service/impl/mcoffee/ShoppingCartMCoffeeServiceImpl.java
#	shopping-cart-application-service/src/main/java/cn/freemud/service/impl/mcoffee/calculation/CouponDiscountCalculation.java
parents b75f4ef1 3d180883
......@@ -1428,6 +1428,9 @@ public class OrderSdkAdapter {
case "SEED_PRODUCT_COUPON":
type = 37;
break;
case "EVM_PRODUCT_COUPON":
type = 39;
break;
case "DISCOUNT_COUPON":
type = 208;
break;
......@@ -2065,6 +2068,9 @@ public class OrderSdkAdapter {
case 37:
newOrderAccountType = OldOrderAccountType.SEED_PRODUCT_COUPON.getCode();
break;
case 39:
newOrderAccountType = OldOrderAccountType.EVM_PRODUCT_COUPON.getCode();
break;
case 208:
newOrderAccountType = OldOrderAccountType.DISCOUNT_COUPON.getCode();
break;
......@@ -2812,7 +2818,7 @@ public class OrderSdkAdapter {
for (CreateOrderProductRequest productRequest : products) {
// 普通商品 订单转换
productRequest.setOpid(index);
originalAmount += updateOrderItemAndSettlement(productRequest, orderItemList, orderSettlementCreateReqList, productRequest, partnerId, "", false);
originalAmount += updateMCCafeOrderItemAndSettlement(productRequest, orderItemList, orderSettlementCreateReqList, productRequest, partnerId, "", false);
// 如果是套餐商品,需要转换当前商品行子集ComboProduct&GroupProduct(固定商品、可选商品)
if (ObjectUtils.equals(ProductTypeEnum.SETMEAL_PRODUCT.getCode(), productRequest.getProductType()) || ObjectUtils.equals(ProductTypeEnum.SETMEAL_UPPRICE_PRODUCT.getCode(), productRequest.getProductType())) {
// 父类商品productId=productId+seq
......@@ -2820,13 +2826,13 @@ public class OrderSdkAdapter {
if (CollectionUtils.isNotEmpty(productRequest.getComboProduct())) {
for(CreateOrderProductRequest combo : productRequest.getComboProduct()) {
combo.setOpid(comboIndex);
updateOrderItemAndSettlement(productRequest, orderItemList, orderSettlementCreateReqList, combo, partnerId, parentProductId, false);
updateMCCafeOrderItemAndSettlement(productRequest, orderItemList, orderSettlementCreateReqList, combo, partnerId, parentProductId, false);
if(CollectionUtils.isNotEmpty(combo.getMaterialProduct())) {
String addProductId = combo.getProductId() + "_" + comboIndex;
for(CreateOrderProductRequest material : combo.getMaterialProduct()) {
material.setSpecification(material.getProductId());
material.setSpecificationName(material.getProductName());
updateOrderItemAndSettlement(productRequest, orderItemList, orderSettlementCreateReqList, material, partnerId, addProductId, true);
updateMCCafeOrderItemAndSettlement(productRequest, orderItemList, orderSettlementCreateReqList, material, partnerId, addProductId, true);
}
}
comboIndex++;
......@@ -2838,7 +2844,7 @@ public class OrderSdkAdapter {
for (CreateOrderProductRequest material: productRequest.getMaterialProduct()){
material.setSpecification(material.getProductId());
material.setSpecificationName(material.getProductName());
updateOrderItemAndSettlement(productRequest, orderItemList, orderSettlementCreateReqList, material, partnerId, addProductId, true);
updateMCCafeOrderItemAndSettlement(productRequest, orderItemList, orderSettlementCreateReqList, material, partnerId, addProductId, true);
}
}
index++;
......@@ -3052,6 +3058,172 @@ public class OrderSdkAdapter {
return orderItemCreateReq.getIsDeleted() ? 0 : totalOriginalProductAmount;
}
/**
* 更新当前商品行,订单商品明细和优惠明细
*
* @param orderItemList 订单商品明细
* @param orderSettlementCreateReqList 优惠明细
* @param product 当前商品行
* @param partnerId 商户号
* @param parentProductId 套餐父商品Id
* @return
*/
private Long updateMCCafeOrderItemAndSettlement(CreateOrderProductRequest productRequest, List<OrderItemCreateReq> orderItemList, List<OrderSettlementCreateReq> orderSettlementCreateReqList, CreateOrderProductRequest product, String partnerId, String parentProductId, Boolean isMaterial) {
OrderItemCreateReq orderItemCreateReq = new OrderItemCreateReq();
orderItemCreateReq.setId(product.getId());
orderItemCreateReq.setPartnerId(partnerId);
orderItemCreateReq.setProductName(product.getProductName());
orderItemCreateReq.setProductForeignName(product.getProductForeignName());
orderItemCreateReq.setProductId(product.getProductId());
orderItemCreateReq.setProductSpec(product.getSpecification());
orderItemCreateReq.setProductSpecName(product.getSpecificationName());
orderItemCreateReq.setProductForeignSpecName(product.getSpecificationForeignName());
orderItemCreateReq.setProductSeq(product.getOpid());
orderItemCreateReq.setProductQuantity(product.getNumber());
orderItemCreateReq.setProductPrice(product.getPrice());
orderItemCreateReq.setIsDeleted(product.getIsDeleted() == null ? false : product.getIsDeleted());
Long totalDiscountAmount = product.getTotalDiscountAmount() == null ? 0L : product.getTotalDiscountAmount();
product.setTotalDiscountAmount(totalDiscountAmount);
//总原价
Long totalOriginalProductAmount = product.getPrice() * product.getNumber();
/**
* 称重菜
* 如果没有称重重量视为0
*/
if (ProductTypeEnum.WEIGHT_PRODUCT.getCode().equals(product.getProductType())) {
Double weight = (product.getWeight() == null || product.getWeight() <= 0) ? 0 : product.getWeight();
Double weightPrice = product.getPrice() * weight;
Long settlementPrice = weightPrice == 0 ? 0 : weightPrice.longValue() - totalDiscountAmount;
orderItemCreateReq.setSalePrice(settlementPrice);
orderItemCreateReq.setSettlementPrice(settlementPrice);
totalOriginalProductAmount = weightPrice.longValue();
} else {
Long settlementPrice = product.getPrice() * product.getNumber() - totalDiscountAmount;
orderItemCreateReq.setSalePrice(settlementPrice / product.getNumber());
orderItemCreateReq.setSettlementPrice(settlementPrice);
}
orderItemCreateReq.setProductSharePrice(totalDiscountAmount / product.getNumber());
orderItemCreateReq.setProductUnit(product.getUnit());
//获取商品属性
OrderProductAddInfoDto addInfo = JSONObject.parseObject(product.getAddInfo(), OrderProductAddInfoDto.class);
if (addInfo !=null ) {
orderItemCreateReq.setProductProperty(addInfo.getAttributeNames());
orderItemCreateReq.setProductForeignProperty(addInfo.getAttributeForeignNames());
}
orderItemCreateReq.setProductPicUrl(product.getPicture());
orderItemCreateReq.setThirdProductId(product.getCustomerCode());
orderItemCreateReq.setProductCode(product.getProductCode());
orderItemCreateReq.setCategoryId(product.getCategoryId());
orderItemCreateReq.setCategoryName(product.getCategoryName());
//套餐商品
if (StringUtils.isNotEmpty(parentProductId)) {
orderItemCreateReq.setParentProductId(parentProductId); //套餐类商品父级商品id
}
orderItemCreateReq.setProductType(product.getProductType()); //套餐 type-6
orderItemCreateReq.setWeight(product.getWeight()); //重量
OrderProductAddInfoDto extInfo = new OrderProductAddInfoDto();
//设置是否为套餐商品
if (product.getIsFixedProduct() != null) {
extInfo.setIsFixedProduct(product.getIsFixedProduct());
}
//第三方商品规格id
if (StringUtils.isNotBlank(product.getThirdProductSpecId())) {
extInfo.setThirdProductSpecId(product.getThirdProductSpecId());
}
//第三方商品属性id
if (StringUtils.isNotBlank(product.getThirdProductPropertyId())) {
extInfo.setThirdProductPropertyId(product.getThirdProductPropertyId());
}
if (StringUtils.isNotBlank(product.getThirdCategoryId())){
extInfo.setThirdCategoryId(product.getThirdCategoryId());
}
if (StringUtils.isNotBlank(product.getClassificationId())){
extInfo.setThirdCensusCategoryId(product.getClassificationId());
extInfo.setThirdCensusCategoryName(product.getClassificationName());
}
if(CollectionUtils.isNotEmpty(product.getSpecialAttrs())) {
extInfo.setSpecialAttrs(product.getSpecialAttrs());
}
if (0 != product.getTax()){
extInfo.setTax(product.getTax());
}
if (StringUtils.isNotBlank(product.getTaxId())){
extInfo.setTaxId(product.getTaxId());
}
if (StringUtils.isNotBlank(product.getCardId())){
extInfo.setCardId(product.getCardId());
}
if (StringUtils.isNotBlank(product.getCardCode())){
extInfo.setCardCode(product.getCardCode());
}
if (StringUtils.isNotBlank(product.getSplitIndex())){
extInfo.setSplitIndex(product.getSplitIndex());
}
extInfo.setStapleFood(product.getStapleFood());
extInfo.setOriginalGoodsUid(product.getOriginalGoodsUid());
extInfo.setCartGoodsUid(product.getCartGoodsUid());
// todo 订单行扩展字段商品组
extInfo.setProductGroupList(product.getProductGroupList());
extInfo.setIsSendGoods(product.getIsSendGoods());
// 是否需要积分,农工商发送积分需要判断商品是否是送积分的商品
// 发积分的操作移到消费者,所以这个值需要保存下来
if(product.getNeedBonus() != null){
extInfo.setNeedBonus(product.getNeedBonus());
}
orderItemCreateReq.setExtInfo(JSONObject.toJSONString(extInfo));
// 拼单加购人信息 add by miaohui 2020.10.12 start
orderItemCreateReq.setUserId(productRequest.getUserId());
orderItemCreateReq.setOpenId(productRequest.getOpenId());
orderItemCreateReq.setNickName(productRequest.getNickName());
orderItemCreateReq.setPhotoUrl(productRequest.getPhotoUrl());
orderItemCreateReq.setPackPrice(productRequest.getPackPrice());
// 拼单加购人信息 add by miaohui 2020.10.12 end
orderItemList.add(orderItemCreateReq);
if (product.getTotalDiscountAmount() != null && product.getTotalDiscountAmount() > 0L && !isMaterial) {
//优惠信息转换
OrderSettlementCreateReq orderSettlementCreateReq = new OrderSettlementCreateReq();
orderSettlementCreateReq.setProductId(product.getSpecification());
orderSettlementCreateReq.setNumber(product.getNumber());
orderSettlementCreateReq.setProductSeq(product.getOpid());
orderSettlementCreateReq.setExternalObjectId(product.getDiscountId());
//商家优惠
orderSettlementCreateReq.setShopDiscountAmount(product.getTotalDiscountAmount());
//结算金额
orderSettlementCreateReq.setSettlementAmount(product.getTotalDiscountAmount());
//是否线上 false:不是 true:是
orderSettlementCreateReq.setIsOnline(true);
orderSettlementCreateReq.setSettlementType(0);
orderSettlementCreateReqList.add(orderSettlementCreateReq);
}
// 设置商品行优惠明细
if (CollectionUtils.isNotEmpty(product.getAccounts())) {
for (CreateOrderAccountRequest accountRequest : product.getAccounts()) {
//优惠信息转换
OrderSettlementCreateReq orderSettlementCreateReq = new OrderSettlementCreateReq();
orderSettlementCreateReq.setProductId(accountRequest.getProductId());
orderSettlementCreateReq.setNumber(accountRequest.getDiscountQty());
orderSettlementCreateReq.setProductSeq(product.getOpid());
orderSettlementCreateReq.setExternalObjectId(accountRequest.getAccountId());
//商家优惠
orderSettlementCreateReq.setShopDiscountAmount(accountRequest.getPrice());
//结算金额
orderSettlementCreateReq.setSettlementAmount(accountRequest.getPrice());
//是否线上 false:不是 true:是
orderSettlementCreateReq.setIsOnline(true);
orderSettlementCreateReq.setSettlementType(getDiscountType(accountRequest.getAccountType()));
orderSettlementCreateReq.setNote(accountRequest.getName());
orderSettlementCreateReq.setExtInfo(accountRequest.getAddInfo());
orderSettlementCreateReqList.add(orderSettlementCreateReq);
}
}
return orderItemCreateReq.getIsDeleted() ? 0 : totalOriginalProductAmount;
}
public GroupOrderClearReq convertAssortmentSdkUpdateOrderProductInfoRequestTo(AssortmentSdkUpdateOrderProductInfoRequest updateOrderProductInfoRequest) {
GroupOrderClearReq groupOrderClearReq = new GroupOrderClearReq();
groupOrderClearReq.setOrderClient(updateOrderProductInfoRequest.getOrderClient());
......
......@@ -23,6 +23,7 @@ public enum OldOrderAccountType {
COUPON(5, "代金券", "COUPON"),
PRODUCT_COUPON(6, "商品券", "PRODUCT_COUPON"),
SEED_PRODUCT_COUPON(37, "种子券", "SEED_PRODUCT_COUPON"),
EVM_PRODUCT_COUPON(39, "EVM券", "EVM_PRODUCT_COUPON"),
DISCOUNT_COUPON(7, "折扣券", "DISCOUNT_COUPON"),
DRIVER_FEE(7, "骑手小费", "DRIVER_FEE"),
WITH_ORDER_BUY_COUPON_FEE(10, "随单买月卡", "WITH_ORDER_BUY_COUPON_FEE"),
......
......@@ -25,6 +25,7 @@ public enum QueryOrderAccountType {
FREIGHT_COUPON("FREIGHT_COUPON", "运费券"),
PRODUCT_COUPON("PRODUCT_COUPON", "商品券"),
SEED_PRODUCT_COUPON("SEED_PRODUCT_COUPON", "种子券"),
EVM_PRODUCT_COUPON("EVM_PRODUCT_COUPON", "种子券"),
DISCOUNT_COUPON("DISCOUNT_COUPON", "折扣券"),
DISCOUNT_AMOUNT("DISCOUNT_AMOUNT", "限时折扣金额"),
PREMIUM_EXCHANGE("PREMIUM_EXCHANGE", "加价购"),
......
......@@ -27,5 +27,6 @@ public class CheckCartRequest {
private Integer orderWay;
private String trackingNo;
private String tableNumber;
private String sessionId;
private String menuType;
}
......@@ -660,7 +660,7 @@ public class CouponAdapter {
public MCCafeCouponRequest convert2MCCafeCouponRequest(QueryOrdersResponseDto.DataBean.OrderBean orderBean, QueryOrdersResponseDto.DataBean.OrderBean.AccountBean accountBean, McdNetBatchQueryResponse.Coupon coupon) {
List<MCCafeProductRedeemVo> products = new ArrayList<>();
//商品券核销核销参数
if (QueryOrderAccountType.PRODUCT_COUPON.equals(orderAdapter.getQueryOrderAccountType(OldOrderAccountType.getByCode(accountBean.getType())))) {
if (OldOrderAccountType.PRODUCT_COUPON.getCode().equals(accountBean.getType()) || OldOrderAccountType.EVM_PRODUCT_COUPON.getCode().equals(accountBean.getType())) {
for (int i = 0; i < orderBean.getProductList().size(); i++) {
QueryOrdersResponseDto.DataBean.OrderBean.ProductBean productBean = orderBean.getProductList().get(i);
String pid = org.apache.commons.lang3.StringUtils.isNotBlank(productBean.getSpecification()) ? productBean.getSpecification() : productBean.getProductId();
......@@ -691,7 +691,7 @@ public class CouponAdapter {
}
}
}
} else if (QueryOrderAccountType.COUPON.equals(orderAdapter.getQueryOrderAccountType(OldOrderAccountType.getByCode(accountBean.getType())))) {
} else if (OldOrderAccountType.COUPON.getCode().equals(accountBean.getType())) {
for (int i = 0; i < orderBean.getProductList().size(); i++) {
QueryOrdersResponseDto.DataBean.OrderBean.ProductBean productBean = orderBean.getProductList().get(i);
String pid = org.apache.commons.lang3.StringUtils.isNotBlank(productBean.getSpecification()) ? productBean.getSpecification() : productBean.getProductId();
......@@ -703,7 +703,7 @@ public class CouponAdapter {
mcCafeProductRedeemVo.setSeq(i + 1);
products.add(mcCafeProductRedeemVo);
}
} else if (QueryOrderAccountType.FREIGHT_COUPON.equals(orderAdapter.getQueryOrderAccountType(OldOrderAccountType.getByCode(accountBean.getType())))) {
} else if (OldOrderAccountType.FREIGHT_COUPON.getCode().equals(accountBean.getType())) {
if(null != coupon) {
McdNetCouponProductRespDto mcdNetCouponProductRespDto = coupon.getCodeInfo().getProducts().get(0);
MCCafeProductRedeemVo mcCafeProductRedeemVo = new MCCafeProductRedeemVo();
......
......@@ -2620,9 +2620,9 @@ public class OrderAdapter {
List<CreateOrderProductRequest> comboProducts = new ArrayList<>();
cartGoodsDetailDto.getComboProducts().forEach(product -> {
CreateOrderProductRequest createOrderComboProduct = convent2MCCafeOrderProductDemo(product, product.getProductType());
if(!product.getIsFixedProduct()) {
createOrderProductDemoDto.setPrice(createOrderProductDemoDto.getPrice()+product.getOriginalPrice());
}
// if(!product.getIsFixedProduct()) {
// createOrderProductDemoDto.setPrice(createOrderProductDemoDto.getPrice()+product.getOriginalPrice());
// }
comboProducts.add(createOrderComboProduct);
if(CollectionUtils.isNotEmpty(product.getMaterialList())) {
//加料商品
......@@ -2820,6 +2820,9 @@ public class OrderAdapter {
if (ActivityTypeEnum.TYPE_31.getCode().equals(activityType)) {
return OldOrderAccountType.DISCOUNT_COUPON;
}
if (ActivityTypeEnum.TYPE_39.getCode().equals(activityType)) {
return OldOrderAccountType.EVM_PRODUCT_COUPON;
}
if (ActivityTypeEnum.TYPE_PACKAGE.getCode().equals(activityType)) {
return OldOrderAccountType.PACK_AMOUNT;
}
......
......@@ -35,6 +35,7 @@ public enum ActivityTypeEnum {
TYPE_35(35, "买1赠3券"),
TYPE_37(37, "种子券"),
TYPE_38(38, "月享卡2.0"),
TYPE_39(39, "EVM券"),
TYPE_5(5, "整单满金额折"),
TYPE_51(51, "每满金额折"),
TYPE_52(52, "阶梯满金额折"),
......
......@@ -71,10 +71,11 @@ public class CouponClientServiceImpl implements CouponClientService {
return null;
}
List<QueryOrdersResponseDto.DataBean.OrderBean.AccountBean> accountList = orderBean.getAccountList().stream().filter(
account -> (orderAdapter.getQueryOrderAccountType(OldOrderAccountType.getByCode(account.getType())).equals(QueryOrderAccountType.COUPON)
|| orderAdapter.getQueryOrderAccountType(OldOrderAccountType.getByCode(account.getType())).equals(QueryOrderAccountType.PRODUCT_COUPON)
|| orderAdapter.getQueryOrderAccountType(OldOrderAccountType.getByCode(account.getType())).equals(QueryOrderAccountType.DISCOUNT_COUPON)
|| orderAdapter.getQueryOrderAccountType(OldOrderAccountType.getByCode(account.getType())).equals(QueryOrderAccountType.FREIGHT_COUPON))
account -> (OldOrderAccountType.COUPON.getCode().equals(account.getType())
|| OldOrderAccountType.PRODUCT_COUPON.getCode().equals(account.getType())
|| OldOrderAccountType.EVM_PRODUCT_COUPON.getCode().equals(account.getType())
|| OldOrderAccountType.DISCOUNT_COUPON.getCode().equals(account.getType())
|| OldOrderAccountType.FREIGHT_COUPON.getCode().equals(account.getType()))
).collect(Collectors.toList());
if (CollectionUtils.isEmpty(accountList)) {
return null;
......@@ -143,9 +144,10 @@ public class CouponClientServiceImpl implements CouponClientService {
return null;
}
List<QueryOrdersResponseDto.DataBean.OrderBean.AccountBean> accountList = orderBean.getAccountList().stream().filter(
account -> (OldOrderAccountType.PRODUCT_COUPON.equals(OldOrderAccountType.getByCode(account.getType()))
|| OldOrderAccountType.COUPON.equals(OldOrderAccountType.getByCode(account.getType()))
|| OldOrderAccountType.DISCOUNT_COUPON.equals(OldOrderAccountType.getByCode(account.getType()))
account -> (OldOrderAccountType.PRODUCT_COUPON.getCode().equals(account.getType())
|| OldOrderAccountType.EVM_PRODUCT_COUPON.getCode().equals(account.getType())
|| OldOrderAccountType.COUPON.getCode().equals(account.getType())
|| OldOrderAccountType.DISCOUNT_COUPON.getCode().equals(account.getType())
)).collect(Collectors.toList());
if (CollectionUtils.isEmpty(accountList)) {
return null;
......
......@@ -43,9 +43,11 @@ public class McCafeCouponAdapter {
}
List<QueryOrdersResponse.DataBean.OrderBean.AccountBean> accountList = orderBean.getAccountList().stream().filter(
account -> (getQueryOrderAccountType(OldOrderAccountType.getByCode(account.getType())).equals(QueryOrderAccountType.COUPON)
|| getQueryOrderAccountType(OldOrderAccountType.getByCode(account.getType())).equals(QueryOrderAccountType.PRODUCT_COUPON)
|| getQueryOrderAccountType(OldOrderAccountType.getByCode(account.getType())).equals(QueryOrderAccountType.DISCOUNT_COUPON))
account -> (OldOrderAccountType.COUPON.getCode().equals(account.getType())
|| OldOrderAccountType.PRODUCT_COUPON.getCode().equals(account.getType())
|| OldOrderAccountType.EVM_PRODUCT_COUPON.getCode().equals(account.getType())
|| OldOrderAccountType.DISCOUNT_COUPON.getCode().equals(account.getType())
|| OldOrderAccountType.FREIGHT_COUPON.getCode().equals(account.getType()))
).collect(Collectors.toList());
if (CollectionUtils.isEmpty(accountList) ) {
return null;
......@@ -78,7 +80,7 @@ public class McCafeCouponAdapter {
public MCCafeCouponRequest convert2MCCafeCouponRequest(QueryOrdersResponse.DataBean.OrderBean orderBean, QueryOrdersResponse.DataBean.OrderBean.AccountBean accountBean, McdNetBatchQueryResponse.Coupon coupon) {
List<MCCafeProductRedeemVo> products = new ArrayList<>();
//商品券核销核销参数
if (QueryOrderAccountType.PRODUCT_COUPON.equals(getQueryOrderAccountType(OldOrderAccountType.getByCode(accountBean.getType())))) {
if (OldOrderAccountType.PRODUCT_COUPON.getCode().equals(accountBean.getType()) || OldOrderAccountType.EVM_PRODUCT_COUPON.getCode().equals(accountBean.getType())) {
for (int i = 0; i < orderBean.getProductList().size(); i++) {
QueryOrdersResponse.DataBean.OrderBean.ProductBean productBean = orderBean.getProductList().get(i);
String pid = StringUtils.isNotBlank(productBean.getSpecification()) ? productBean.getSpecification() : productBean.getProductId();
......@@ -109,7 +111,7 @@ public class McCafeCouponAdapter {
}
}
}
}else if (QueryOrderAccountType.COUPON.equals(getQueryOrderAccountType(OldOrderAccountType.getByCode(accountBean.getType())))) {
}else if (OldOrderAccountType.COUPON.getCode().equals(accountBean.getType())) {
for (int i = 0; i < orderBean.getProductList().size(); i++) {
QueryOrdersResponse.DataBean.OrderBean.ProductBean productBean = orderBean.getProductList().get(i);
String pid = StringUtils.isNotBlank(productBean.getSpecification()) ? productBean.getSpecification() : productBean.getProductId();
......
......@@ -27,6 +27,7 @@ import com.freemud.application.sdk.api.productcenter.domain.ProductBeanDTO;
import com.freemud.sdk.api.assortment.shoppingcart.constant.CommonsConstant;
import com.freemud.sdk.api.assortment.shoppingcart.request.CheckCartRequest;
import com.google.common.collect.Lists;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils;
......@@ -38,6 +39,7 @@ import java.util.stream.Collectors;
import java.util.stream.LongStream;
@Component
@Slf4j
public class ShoppingCartConvertAdapter {
private static final String ATTRIBUTEID = "attributeId";
......@@ -514,6 +516,7 @@ public class ShoppingCartConvertAdapter {
validateShopProductRequest.setPartnerId(checkCartRequest.getPartnerId());
validateShopProductRequest.setStoreId(checkCartRequest.getStoreId());
validateShopProductRequest.setProductTypeList(new ArrayList<>());
validateShopProductRequest.setSessionId(checkCartRequest.getSessionId());
for (com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods cartGoods : checkCartRequest.getCartGoodsList()) {
// 过滤非商品券商品
if (cartGoods.getCartGoodsUid().startsWith(CommonsConstant.COUPON_PREFIX)) {
......@@ -526,13 +529,7 @@ public class ShoppingCartConvertAdapter {
|| ObjectUtils.equals(com.freemud.sdk.api.assortment.shoppingcart.constant.GoodsTypeEnum.COUPON_GOODS.getGoodsType(), cartGoods.getGoodsType())
|| ObjectUtils.equals(GoodsTypeEnum.ALL_COUPON_GOODS.getGoodsType(), cartGoods.getGoodsType()))
? cartGoods.getSkuId() : cartGoods.getSpuId());
// 应产品要求
// 普通商品,取商品的finalePrice(普通商品售价);套餐商品,取originalPrice(套餐价格)
if (ObjectUtils.equals(com.freemud.sdk.api.assortment.shoppingcart.constant.GoodsTypeEnum.SET_MEAL_GOODS.getGoodsType(), cartGoods.getGoodsType())){
productType.setPrice(null == cartGoods.getOriginalPrice() ? 0 : cartGoods.getOriginalPrice().intValue());
}else{
productType.setPrice(cartGoods.getFinalPrice() == null ? 0 : cartGoods.getFinalPrice().intValue());
}
productType.setValidatePrice(productType.getPrice() == 0 ? 0 : 1);
productType.setValidateAttribute(1);
productType.setValidateStatuses(Arrays.asList(2));
......@@ -564,6 +561,7 @@ public class ShoppingCartConvertAdapter {
public List<ValidateSkuProductType> getValidateSkuProductType(List<com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods.ComboxGoods> productComboList) {
List<ValidateSkuProductType> result = new ArrayList<>();
if (CollectionUtils.isNotEmpty(productComboList)) {
Map<String, ValidateSkuProductType> map = new HashMap<>();
for (com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods.ComboxGoods comboxGoods : productComboList) {
if("0".equals(comboxGoods.getGoodsId())){
continue;
......@@ -576,7 +574,13 @@ public class ShoppingCartConvertAdapter {
validateSkuProductType.setQty(comboxGoods.getQty());
validateSkuProductType.setAttributeList(getAttributes(comboxGoods.getExtra()));
validateSkuProductType.setProductGroupId(comboxGoods.getProductGroupId());
ValidateSkuProductType validateSkuProductTypeExists = map.get(validateSkuProductType.toString());
if(validateSkuProductTypeExists == null) {
result.add(validateSkuProductType);
map.put(validateSkuProductType.toString(), validateSkuProductType);
} else {
validateSkuProductTypeExists.setQty(validateSkuProductTypeExists.getQty()+validateSkuProductType.getQty());
}
}
}
return result;
......@@ -749,6 +753,83 @@ public class ShoppingCartConvertAdapter {
}
}
/**
* 更新套餐固定商品、可选商品信息
*
* @param comboxGoods 固定商品或可选商品
* @param parentProductBean 套餐服商品
* @param isComboxGoods 是否是固定商品
* @return
*/
private void updateComboxGoodsInfoForMCoffeeWithMaterial(com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods.ComboxGoods comboxGoods, ProductTypeBeanDTO parentProductBean, boolean isComboxGoods, ProductTypeBeanDTO productTypeBeanDTO) {
if("0".equals(comboxGoods.getGoodsId())){
return;
}
ProductTypeBeanDTO.ProductComboType productComboType = new ProductTypeBeanDTO.ProductComboType();
ProductTypeBeanDTO.ProductGroupType.GroupDetailType groupDetailType = new ProductTypeBeanDTO.ProductGroupType.GroupDetailType();
if (isComboxGoods) {
productComboType = parentProductBean.getProductComboList().stream().filter(p -> ObjectUtils.equals(comboxGoods.getGoodsId(), p.getProductId())).findFirst().orElse(new ProductTypeBeanDTO.ProductComboType());
} else {
Map<String, ProductTypeBeanDTO.ProductGroupType.GroupDetailType> map = new HashMap<>();
parentProductBean.getProductGroupList().stream().map(t -> t.getGroupDetail()).forEach(group -> group.forEach(detailType -> map.put(detailType.getProductId(), detailType)));
groupDetailType = map.get(comboxGoods.getGoodsId());
}
// 若是固定商品则取商品详情的FinalPrice,若是可选商品则取MarkUpPrice
Long finalPrice = isComboxGoods ? (null != productComboType.getFinalPrice() ? productComboType.getFinalPrice().longValue() : 0L)
: (null != groupDetailType.getMarkUpPrice() ? groupDetailType.getMarkUpPrice().longValue() : 0L);
// 设置商品详情
Map<String, String> attributes = getAttributesNew(comboxGoods.getExtra());
comboxGoods.setSpuId(comboxGoods.getSpuId());
comboxGoods.setName(isComboxGoods ? productComboType.getProductName() : groupDetailType.getProductName());
comboxGoods.setSpuName(comboxGoods.getName());
comboxGoods.setSpecProductId(attributes.get(ATTRIBUTEID));
comboxGoods.setSubName(attributes.get(ATTRIBUTENAME));
comboxGoods.setPic(isComboxGoods ? productComboType.getPicture() : groupDetailType.getPicture());
comboxGoods.setOriginalPrice(isComboxGoods ? (null != productComboType.getFinalPrice() ? productComboType.getFinalPrice().longValue() : 0L)
: (null != groupDetailType.getProductFinalPrice() ? groupDetailType.getProductFinalPrice().longValue() : 0L));
comboxGoods.setOriginalAmount(comboxGoods.getOriginalPrice() * comboxGoods.getQty());
comboxGoods.setAmount(finalPrice * comboxGoods.getQty());
comboxGoods.setCustomerCode(isComboxGoods ? (StringUtils.isNotEmpty(productComboType.getCustomerCode()) ? productComboType.getCustomerCode() : "")
: (StringUtils.isNotEmpty(groupDetailType.getCustomerCode()) ? groupDetailType.getCustomerCode() : ""));
comboxGoods.setFinalPrice(finalPrice);
comboxGoods.setWeightType(isComboxGoods ? CommonsConstant.WEIGHT_PRODUCT.equals(productComboType.getWeightType()) : CommonsConstant.WEIGHT_PRODUCT.equals(groupDetailType.getWeightType()));
comboxGoods.setUnit(isComboxGoods ? (StringUtils.isNotEmpty(productComboType.getUnit()) ? productComboType.getUnit() :"") :
(StringUtils.isNotEmpty(groupDetailType.getUnit()) ? groupDetailType.getUnit() : ""));
comboxGoods.setWeight(isComboxGoods ? (null == productComboType.getWeight() ? 0 : productComboType.getWeight()) :
(null == groupDetailType.getWeight() ? 0:groupDetailType.getWeight()));
comboxGoods.setTax(isComboxGoods ? (null == productComboType.getTax() ? 0 : productComboType.getTax())
: (null == groupDetailType.getTax() ? 0 : groupDetailType.getTax()));
comboxGoods.setTaxId(isComboxGoods ? (StringUtils.isNotEmpty(productComboType.getTaxId()) ? productComboType.getTaxId() : "") :
(StringUtils.isNotEmpty(groupDetailType.getTaxId()) ? groupDetailType.getTaxId() : ""));
//2020/10/22 套餐内可选商品加料,暂无
if(CollectionUtils.isNotEmpty(comboxGoods.getProductMaterialList())){
if(CollectionUtils.isNotEmpty(productTypeBeanDTO.getAdditionalGroupList())) {
List<ProductTypeBeanDTO.ProductGroupType> productGroupTypes = productTypeBeanDTO.getAdditionalGroupList();
Map<String, List<ProductTypeBeanDTO.ProductGroupType.GroupDetailType>> productGroupTypeMap = productGroupTypes.stream().collect(
Collectors.toMap(ProductTypeBeanDTO.ProductGroupType::getGroupCode,
ProductTypeBeanDTO.ProductGroupType::getGroupDetail,
(k1,k2) -> k1));
comboxGoods.getProductMaterialList().stream().forEach(o -> {
List<ProductTypeBeanDTO.ProductGroupType.GroupDetailType> list = productGroupTypeMap.get(o.getCustomerCode().split("_")[0]);
for(ProductTypeBeanDTO.ProductGroupType.GroupDetailType groupDetailType1 : list) {
if (groupDetailType1.getProductId().equals(o.getSpuId())) {
o.setAmount(groupDetailType1.getProductFinalPrice().longValue());
o.setFinalPrice(groupDetailType1.getProductFinalPrice().longValue());
o.setOriginalAmount(groupDetailType1.getProductFinalPrice().longValue());
o.setOriginalPrice(groupDetailType1.getProductFinalPrice().longValue());
o.setSpuName(groupDetailType1.getProductName());
break;
}
}
});
} else {
comboxGoods.setProductMaterialList(new ArrayList<>());
}
}
}
/**
* 更新套餐可选商品加料信息
......@@ -949,7 +1030,7 @@ public class ShoppingCartConvertAdapter {
updateComboxGoodsInfoFor(productCombo, productBeanDTO, true);
}else {
//套餐子商品为单品
updateComboxGoodsInfoForMCoffee(productCombo, spuProduct, true);
updateComboxGoodsInfoForMCoffeeWithMaterial(productCombo, spuProduct, true, subProductTypeMap.get(productCombo.getGoodsId()));
}
}
}
......@@ -963,60 +1044,48 @@ public class ShoppingCartConvertAdapter {
}
}else {
for (com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods.ComboxGoods productGroup : cartGoods.getProductGroupList()) {
// updateComboxGoodsInfoForMCoffee(productGroup, spuProduct, false);
updateComboxGoodsInfoForMCoffeeProductGroup(productGroup,spuProduct,subProductTypeMap
,false);
updateComboxGoodsInfoForMCoffeeProductGroup(productGroup,spuProduct,subProductTypeMap,false);
}
}
}
//可选商品组加料价格加到购物车行记录上
Long materialAmount =
cartGoods.getProductGroupList().stream().mapToLong(group -> (null != group.getMaterialAmount() ? group.getMaterialAmount() : 0)).sum();
cartGoods.setOriginalMaterialAmount(materialAmount);
cartGoods.setMaterialAmount(materialAmount);
cartGoods.setOriginalAmount(cartGoods.getOriginalPrice()*cartGoods.getQty() + materialAmount);
}
}
//更新当前商品行价格
Long newOrigOriginalPrice = 0L;
if (isSetMealProduct) {
Long comboxGoodsFinalPrice = cartGoods.getProductComboList().stream().mapToLong(t -> t.getFinalPrice()).sum();
Long comboxGoodsOriginalPrice = cartGoods.getProductComboList().stream().mapToLong(t -> t.getOriginalAmount()).sum();
Long groupGoodsOriginalPrice = cartGoods.getProductGroupList().stream().mapToLong(t -> t.getOriginalAmount()).sum();
Long groupGoodsFinalPrice = cartGoods.getProductGroupList().stream().mapToLong(t -> t.getFinalPrice()).sum();
cartGoods.setOriginalPrice(null != cartGoods.getOriginalPrice()? cartGoods.getOriginalPrice() :
comboxGoodsOriginalPrice);
cartGoods.setOriginalAmount((cartGoods.getOriginalPrice()+groupGoodsOriginalPrice)* cartGoods.getQty());
cartGoods.setOriginalPrice(null != spuProduct.getOriginalPrice()? spuProduct.getOriginalPrice() : 0);
cartGoods.setOriginalAmount(cartGoods.getOriginalPrice()* cartGoods.getQty());
//咨询商品服务,套餐售价取originalPrice
cartGoods.setFinalPrice(null != cartGoods.getOriginalPrice() ? cartGoods.getOriginalPrice() :
comboxGoodsFinalPrice);
cartGoods.setAmount((cartGoods.getFinalPrice()+groupGoodsFinalPrice) * cartGoods.getQty());
cartGoods.setFinalPrice(null != spuProduct.getFinalPrice() ? spuProduct.getFinalPrice() : 0);
cartGoods.setAmount(cartGoods.getFinalPrice() * cartGoods.getQty());
} else {
newOrigOriginalPrice = isSkuProduct ? skuProduct.getFinalPrice() : spuProduct.getFinalPrice();
cartGoods.setOriginalPrice(newOrigOriginalPrice);
cartGoods.setOriginalAmount(newOrigOriginalPrice * cartGoods.getQty());
cartGoods.setAmount(newOrigOriginalPrice * cartGoods.getQty());
//咨询商品服务,套餐售价取originalPrice
cartGoods.setFinalPrice(isSkuProduct ? skuProduct.getOriginalPrice() : spuProduct.getFinalPrice());
cartGoods.setFinalPrice(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()));
if (null == cartGoods.getMaterialAmount()) {
cartGoods.setMaterialAmount(0L);
}
if (null == cartGoods.getOriginalMaterialAmount()) {
cartGoods.setOriginalMaterialAmount(0L);
}
// todo 设置加料
this.checkMaterialProductForMCoffee(cartGoods, spuProduct);
} catch (Exception ex) {
System.out.println(ex.getLocalizedMessage());
ErrorLog.infoConvertJson(this.getClass(), "updateCartGoodsInfoForMCoffee_Error", ex);
log.error("updateCartGoodsInfoForMCoffee_Error {} ", getExceptionInfo(ex));
cartGoods.setCartGoodsUid(null);
}
}
private String getExceptionInfo(Exception e) {
StringBuilder sb = new StringBuilder();
StackTraceElement[] trace = e.getStackTrace();
for (StackTraceElement traceElement : trace) {
sb.append("\tat " + traceElement);
}
return sb.toString();
}
private void updateComboxGoodsInfoFor(com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods.ComboxGoods comboxGoods, ProductTypeBeanDTO productBeanDTO, boolean isComboxGoods) {
if(CollectionUtils.isEmpty(productBeanDTO.getSkuList())){
......
......@@ -70,7 +70,7 @@ public class ShoppingCartMccafeAdapter {
cartGoodsDetailDto.setSpuName(comboxGoods.getSpuName());
cartGoodsDetailDto.setSkuId(comboxGoods.getGoodsId());
cartGoodsDetailDto.setSkuName(StringUtils.isEmpty(comboxGoods.getSkuName()) ? comboxGoods.getSpuName() : comboxGoods.getSkuName());
cartGoodsDetailDto.setOriginalPrice(comboxGoods.getOriginalPrice());
cartGoodsDetailDto.setOriginalPrice(comboxGoods.getFinalPrice());
cartGoodsDetailDto.setPicture(comboxGoods.getPic());
int qty = comboxGoods.getQty() * cartGoods.getQty();
cartGoodsDetailDto.setQty(qty);
......@@ -150,9 +150,9 @@ public class ShoppingCartMccafeAdapter {
cartGoodsDetailDto.setSpuName(cartGoods.getSpuName());
cartGoodsDetailDto.setSkuId(StringUtils.isEmpty(cartGoods.getSkuId()) ? cartGoods.getSpuId() : cartGoods.getSkuId());
cartGoodsDetailDto.setSkuName(StringUtils.isEmpty(cartGoods.getSkuName()) ? cartGoods.getSpuName() : cartGoods.getSkuName());
cartGoodsDetailDto.setOriginalPrice(cartGoods.getOriginalPrice());
cartGoodsDetailDto.setOriginalPrice(cartGoods.getFinalPrice());
// cartGoodsDetailDto.setTotalDiscountAmount(0);
cartGoodsDetailDto.setSalePrice(cartGoods.getOriginalPrice());
cartGoodsDetailDto.setSalePrice(cartGoods.getFinalPrice());
cartGoodsDetailDto.setPicture(cartGoods.getPic());
cartGoodsDetailDto.setQty(cartGoods.getQty());
cartGoodsDetailDto.setActivityType(cartGoods.getActivityType());
......
......@@ -20,4 +20,8 @@ public class ProductAttributeValueType {
private String attributeId;
private String attributeValue;
public String toString() {
return "attributeId:"+attributeId+" attributeValue:"+attributeValue;
}
}
......@@ -22,6 +22,7 @@ public class ValidateShopProductRequest {
private String partnerId;
private String storeId;
private String channel;
private String sessionId;
private List<ValidateShopProductType> productTypeList;
}
......@@ -29,4 +29,10 @@ public class ValidateSkuProductType {
private ProductSpecAttrValueGroupType productSpecAttrValueGroupType;
public String toString() {
return "skuId:"+skuId+" productId:"+productId+" price:"+price+" markUpPrice:"+markUpPrice+" qty:"+qty+" productGroupId:"+productGroupId
+" attributeList:"+attributeList.toString();
}
}
......@@ -37,6 +37,7 @@ public enum ActivityTypeEnum {
TYPE_33(33, "换购券"),
TYPE_37(37, "月享卡种子券"),
TYPE_38(38,"月享卡2.0"),
TYPE_39(39, "EVM券"),
TYPE_5(5, "整单满金额折"),
TYPE_51(51, "每满金额折"),
TYPE_52(52, "阶梯满金额折"),
......
......@@ -23,6 +23,7 @@ public class ServiceException extends RuntimeException {
public ServiceException(ResponseResult result, String message) {
this.result = result;
this.message = message;
this.result.setMessage(message);
}
public ResponseResult getResult() {
......
......@@ -263,8 +263,7 @@ public class AssortmentSdkService {
request.setStoreId(storeId);
request.setTrackingNo(LogThreadLocal.getTrackingNo());
request.setMenuType(BusinessTypeEnum.getByType(menuType).getCode());
BaseResponse<List<ProductBeanDTO>> baseResponse =
shoppingCartService.getProductsInfo(request);
BaseResponse<List<ProductBeanDTO>> baseResponse = shoppingCartService.getProductsInfo(request);
if (baseResponse == null || !ResponseResult.SUCCESS.getCode().equals(baseResponse.getCode()) || CollectionUtils.isEmpty(baseResponse.getResult())) {
throw new ServiceException(ResponseResult.SHOPPING_CART_PRODUCT_NOT_EXIST);
}
......
......@@ -201,8 +201,7 @@ public class ShoppingCartMCoffeeServiceImpl {
//根据券号获取券名称
String couponName = "";
if (StringUtils.isNotEmpty(couponCode)) {
CustomerInfoVo userLoginInfoDto = getCustomerInfoVo(sessionId);
couponName = getCouponNameByCode(couponCode, userLoginInfoDto,
couponName = getCouponNameByCode(couponCode, assortmentCustomerInfoVo,
BusinessTypeEnum.getByType(addShoppingCartGoodsRequestVo.getMenuType()).getCode(), storeId);
//月享卡2.0之后不在显示月享卡券的名称 与普通商品券不同,故过滤掉月享卡券名称查询
if (!("9999").equals(addCartGoods.getSpuId()) && !("9999").equals(addCartGoods.getSkuId())){
......@@ -588,7 +587,7 @@ public class ShoppingCartMCoffeeServiceImpl {
// cartGoodsList = checkCartGoods(partnerId, storeId, orderType, menuType, shoppingCartGoodsResponseVo, cartGoodsList);
List<CartGoods> temList = new ArrayList<>();
for (CartGoods goods : cartGoodsList) {
temList.addAll(checkCartGoods(partnerId, storeId, orderType, menuType, shoppingCartGoodsResponseVo, Arrays.asList(goods)));
temList.addAll(checkCartGoods(partnerId, storeId, orderType, menuType, shoppingCartGoodsResponseVo, Arrays.asList(goods), sessionId));
}
cartGoodsList = temList;
......@@ -667,7 +666,7 @@ public class ShoppingCartMCoffeeServiceImpl {
monthCardProduct = goods;
continue;
}
temList.addAll(checkCartGoods(partnerId, storeId, orderType, menuType, shoppingCartGoodsResponseVo, Arrays.asList(goods)));
temList.addAll(checkCartGoods(partnerId, storeId, orderType, menuType, shoppingCartGoodsResponseVo, Arrays.asList(goods), sessionId));
}
if (null != monthCardProduct) {
......@@ -1052,8 +1051,18 @@ public class ShoppingCartMCoffeeServiceImpl {
if (requestVo.getOperationType() == ShoppingCartOperationType.CHECK.getCode()){
// 新门店check购物车中所有商品
for (CartGoods cartGoods : cartGoodsList) {
onlyCheckGoodsList.addAll(checkCartGoods(partnerId, toStoreId, orderType, menuType, shoppingCartGoodsResponseVo, Arrays.asList(cartGoods)));
onlyCheckGoodsList.addAll(checkCartGoods(partnerId, toStoreId, orderType, menuType, shoppingCartGoodsResponseVo, Arrays.asList(cartGoods), sessionId));
}
}else{
// 新门店check购物车中所有商品
List<CartGoods> temList = new ArrayList<>();
for (CartGoods goods : cartGoodsList) {
temList.addAll(checkCartGoods(partnerId, toStoreId, orderType, menuType, shoppingCartGoodsResponseVo, Arrays.asList(goods), sessionId));
}
cartGoodsList = temList;
}
if (requestVo.getOperationType() == ShoppingCartOperationType.CHECK.getCode()) {
if (StringUtils.isNotEmpty(shoppingCartGoodsResponseVo.getToastMsg())){
//设置更新响应信息,校验失败只弹框提示消息,不切换门店,故将门店id重置为原来门店
shoppingCartGoodsResponseVo.setProducts(cartGoodsList);
......@@ -1154,7 +1163,7 @@ public class ShoppingCartMCoffeeServiceImpl {
// cartGoodsList = checkCartGoods(partnerId, storeId, orderType, menuType, shoppingCartGoodsResponseVo, cartGoodsList);
List<CartGoods> temList = new ArrayList<>();
for (CartGoods goods : cartGoodsList) {
temList.addAll(checkCartGoods(partnerId, storeId, orderType, menuType, shoppingCartGoodsResponseVo, Arrays.asList(goods)));
temList.addAll(checkCartGoods(partnerId, storeId, orderType, menuType, shoppingCartGoodsResponseVo, Arrays.asList(goods), sessionId));
}
cartGoodsList = temList;
......@@ -1394,12 +1403,12 @@ public class ShoppingCartMCoffeeServiceImpl {
* 获取购物车商品,添加商品,校验商品合法性,合并商品行,重新set购物车信息到缓存中
*
* @param addCartGoods
* @param userId
* @param sessionId
* @param shoppingCartGoodsResponseVo
*/
public List<CartGoods> updateCartGoodsLegal(String partnerId, String storeId, Integer orderType, String tableNumber, String menuType, String userId,
public List<CartGoods> updateCartGoodsLegal(String partnerId, String storeId, Integer orderType, String tableNumber, String menuType, String sessionId,
CartGoods addCartGoods, ShoppingCartGoodsBaseResponseVo shoppingCartGoodsResponseVo, List<CartGoods> oldCartGoodsList) {
oldCartGoodsList = checkCartGoods(partnerId, storeId, orderType, menuType,shoppingCartGoodsResponseVo, oldCartGoodsList);
oldCartGoodsList = checkCartGoods(partnerId, storeId, orderType, menuType,shoppingCartGoodsResponseVo, oldCartGoodsList, sessionId);
List<CartGoods> newCartGoods = new ArrayList<>();
newCartGoods.add(addCartGoods);
......@@ -1414,7 +1423,7 @@ public class ShoppingCartMCoffeeServiceImpl {
}
//加购商品校验
List<CartGoods> newCartGoodsList = checkCartGoods(partnerId, storeId, orderType, menuType,shoppingCartGoodsResponseVo, newCartGoods);
List<CartGoods> newCartGoodsList = checkCartGoods(partnerId, storeId, orderType, menuType,shoppingCartGoodsResponseVo, newCartGoods, sessionId);
List<CartGoods> nowCartGoodsList = new ArrayList<>();
if(CollectionUtils.isNotEmpty(oldCartGoodsList)){
nowCartGoodsList.addAll(oldCartGoodsList);
......@@ -1592,7 +1601,6 @@ public class ShoppingCartMCoffeeServiceImpl {
return isSpecialGoods;
}
public static void setClassificationAndPrice(CartGoods cartGoods, List<ProductBeanDTO> productBeanListSpuClass) {
if (productBeanListSpuClass == null || productBeanListSpuClass.size() == 0) {
return;
......@@ -1622,9 +1630,9 @@ public class ShoppingCartMCoffeeServiceImpl {
//套餐商品赋值
if (ObjectUtils.equals(GoodsTypeEnum.SET_MEAL_GOODS.getGoodsType(), cartGoods.getGoodsType())){
cartGoods.setOriginalPrice(productBeanListSpuClass.get(0).getOriginalPrice());
cartGoods.setFinalPrice(productBeanListSpuClass.get(0).getFinalPrice());
cartGoods.setPackPrice(productBeanListSpuClass.get(0).getPackPrice());
// cartGoods.setOriginalPrice(productBeanListSpuClass.get(0).getOriginalPrice());
// cartGoods.setFinalPrice(productBeanListSpuClass.get(0).getFinalPrice());
// cartGoods.setPackPrice(productBeanListSpuClass.get(0).getPackPrice());
cartGoods.setCustomerCode(productBeanListSpuClass.get(0).getCustomerCode());
cartGoods.setName(productBeanListSpuClass.get(0).getName());
cartGoods.setSpuName(productBeanListSpuClass.get(0).getName());
......@@ -1635,33 +1643,36 @@ public class ShoppingCartMCoffeeServiceImpl {
cartGoods.setTaxId(productBeanListSpuClass.get(0).getTaxId());
//套餐固定商品赋值
if (CollectionUtils.isNotEmpty(productBeanListSpuClass.get(0).getProductComboList())){
if (CollectionUtils.isNotEmpty(cartGoods.getProductComboList())){
for (CartGoods.ComboxGoods comboxGoods : cartGoods.getProductComboList()) {
for (ProductBeanDTO.ProductComboType comboType: productBeanListSpuClass.get(0).getProductComboList()){
if (comboxGoods.getGoodsId().equals(comboType.getProductId()) && comboType.getQuantity()>0){
comboxGoods.setQty(comboType.getQuantity());
}
}
}
if (CollectionUtils.isNotEmpty(productBeanListSpuClass.get(0).getProductComboList()) && CollectionUtils.isNotEmpty(cartGoods.getProductComboList())){
Map<String, Integer> productMap = productBeanListSpuClass.get(0).getProductComboList().stream()
.collect(Collectors.toMap(ProductBeanDTO.ProductComboType::getProductId, ProductBeanDTO.ProductComboType::getQuantity, (k1,k2) -> k1+k2));
Map<String, Integer> cartGoodsMap = cartGoods.getProductComboList().stream()
.collect(Collectors.toMap(
o -> (StringUtils.isBlank(o.getSpuId()) || "0".equals(o.getSpuId()))?o.getSkuId():o.getSpuId(),
CartGoods.ComboxGoods::getQty,
(k1, k2) -> k1+k2));
if(productMap.entrySet().stream().filter(o -> !o.getValue().equals(cartGoodsMap.get(o.getKey()))).findFirst().isPresent()) {
throw new ServiceException(ResponseResult.SHOPPING_CART_VERSION_ERROR, "加购套餐子商品数量异常");
}
}
//套餐可选商品赋值
if (CollectionUtils.isNotEmpty(productBeanListSpuClass.get(0).getProductGroupList())){
for (ProductBeanDTO.ProductGroupType groupType : productBeanListSpuClass.get(0).getProductGroupList()) {
if (CollectionUtils.isNotEmpty(groupType.getGroupDetail())){
for (ProductBeanDTO.ProductGroupType.GroupDetailType detailType : groupType.getGroupDetail()) {
for (CartGoods.ComboxGoods groupGoods : cartGoods.getProductGroupList()) {
if (detailType.getProductId().equals(groupGoods.getGoodsId())) {
groupGoods.setFinalPrice(detailType.getMarkUpPrice().longValue());
groupGoods.setOriginalPrice(detailType.getProductPrice().longValue());
}
}
}
}
}
}
// if (CollectionUtils.isNotEmpty(productBeanListSpuClass.get(0).getProductGroupList())){
// for (ProductBeanDTO.ProductGroupType groupType : productBeanListSpuClass.get(0).getProductGroupList()) {
// if (CollectionUtils.isNotEmpty(groupType.getGroupDetail())){
// for (ProductBeanDTO.ProductGroupType.GroupDetailType detailType : groupType.getGroupDetail()) {
// for (CartGoods.ComboxGoods groupGoods : cartGoods.getProductGroupList()) {
// if (detailType.getProductId().equals(groupGoods.getGoodsId())) {
// groupGoods.setFinalPrice(detailType.getMarkUpPrice().longValue());
// groupGoods.setOriginalPrice(detailType.getProductPrice().longValue());
// }
// }
// }
// }
// }
// }
}
}
......@@ -1680,13 +1691,7 @@ public class ShoppingCartMCoffeeServiceImpl {
cartGoods.setIsMonthCardGoods(addShoppingCartGoodsRequestVo.getIsMonthCardGoods());
cartGoods.setCouponCode(addShoppingCartGoodsRequestVo.getCouponCode());
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();
cartGoods.setSpuId(mCoffeeProductIdsVo.getSpuId());
cartGoods.setSkuId(goodsId);
cartGoods.setCouponCode(spuId.substring(CommonsConstant.COUPON_PREFIX.length()));
// cartGoods.setCartGoodsUid(spuId);
} else if (CollectionUtils.isNotEmpty(addShoppingCartGoodsRequestVo.getProductComboList()) || CollectionUtils.isNotEmpty(addShoppingCartGoodsRequestVo.getProductGroupList())) {
if (CollectionUtils.isNotEmpty(addShoppingCartGoodsRequestVo.getProductComboList()) || CollectionUtils.isNotEmpty(addShoppingCartGoodsRequestVo.getProductGroupList())) {
goodsType = GoodsTypeEnum.SET_MEAL_GOODS.getGoodsType();
} else if (CommonsConstant.COUPON_TYPE.equals(addShoppingCartGoodsRequestVo.getCouponType())){
goodsType = GoodsTypeEnum.ALL_COUPON_GOODS.getGoodsType();
......@@ -1794,7 +1799,7 @@ public class ShoppingCartMCoffeeServiceImpl {
* 购物车商品check,加购商品不在菜单不check
*/
private List<CartGoods> checkCartGoods(String partnerId, String storeId, Integer orderType, String menuType,
ShoppingCartGoodsBaseResponseVo shoppingCartGoodsResponseVo, List<CartGoods> cartGoodsList) {
ShoppingCartGoodsBaseResponseVo shoppingCartGoodsResponseVo, List<CartGoods> cartGoodsList, String sessionId) {
//筛选数量不为0商品 && 非月享卡2.0虚拟商品
cartGoodsList = cartGoodsList.stream().filter(cartGoods -> cartGoods.getQty() != 0 && !StringUtils.equals("9999",cartGoods.getSkuId())).collect(Collectors.toList());
......@@ -1808,7 +1813,7 @@ public class ShoppingCartMCoffeeServiceImpl {
if (CollectionUtils.isNotEmpty(checkGoods)) {
//当商品全部添加完毕,校验购物车商品(是否合法,上下架,点餐方式,是否在当前菜单中...),并移除非法商品
CheckCartRequest checkCartRequest = checkShoppingCartSdkForMCoffee(checkGoods, partnerId,
storeId, shoppingCartGoodsResponseVo, orderType, "", menuType, shoppingCartBaseService);
storeId, shoppingCartGoodsResponseVo, orderType, sessionId, menuType, shoppingCartBaseService);
if (checkCartRequest.getShoppingCartGoodsResponseVo() != null) {
shoppingCartGoodsResponseVo.setToastMsg(checkCartRequest.getShoppingCartGoodsResponseVo().getToastMsg());
shoppingCartGoodsResponseVo.setChanged(checkCartRequest.getShoppingCartGoodsResponseVo().getChanged());
......@@ -1861,7 +1866,7 @@ public class ShoppingCartMCoffeeServiceImpl {
ShoppingCartGoodsBaseResponseVo shoppingCartGoodsResponseVo, List<CartGoods> cartGoodsList) {
//筛选数量不为0商品
cartGoodsList = cartGoodsList.stream().filter(cartGoods -> cartGoods.getQty() != 0 && StringUtils.equals("9999",cartGoods.getSkuId())).collect(Collectors.toList());
cartGoodsList = cartGoodsList.stream().filter(cartGoods -> cartGoods.getQty() != 0 && !StringUtils.equals("9999",cartGoods.getSkuId())).collect(Collectors.toList());
//筛选非加购商品--加价购商品不校验是否在菜单,不调用validateShopProduct
List<CartGoods> checkGoods = cartGoodsList.stream().filter(cartGoods -> cartGoods.getGoodsType() != GoodsTypeEnum.REDUCE_PRICE_GOODS.getGoodsType()).collect(Collectors.toList());
......@@ -1931,14 +1936,14 @@ public class ShoppingCartMCoffeeServiceImpl {
* @param orderType
*/
public CheckCartRequest checkShoppingCartSdkForMCoffee(List<CartGoods> oldAllCartGoodsList, String partnerId, String storeId, ShoppingCartGoodsBaseResponseVo shoppingCartGoodsResponseVo
, Integer orderType, String tableNumber, String menuType ,ShoppingCartBaseService shoppingCartService) {
, Integer orderType, String sessionId, String menuType ,ShoppingCartBaseService shoppingCartService) {
CheckCartRequest checkCartRequest = new CheckCartRequest();
checkCartRequest.setCartGoodsList(JSONArray.parseArray(JSONObject.toJSONString(oldAllCartGoodsList), com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods.class));
checkCartRequest.setOrderWay(orderType);
checkCartRequest.setPartnerId(partnerId);
checkCartRequest.setShoppingCartGoodsResponseVo(JSONObject.parseObject(JSONObject.toJSONString(shoppingCartGoodsResponseVo), com.freemud.sdk.api.assortment.shoppingcart.domain.ShoppingCartGoodsResponseVo.class));
checkCartRequest.setStoreId(storeId);
checkCartRequest.setTableNumber(tableNumber);
checkCartRequest.setSessionId(sessionId);
checkCartRequest.setTrackingNo(LogThreadLocal.getTrackingNo());
checkCartRequest.setMenuType(BusinessTypeEnum.getByType(menuType).getCode());
BaseResponse<CheckCartRequest> baseResponse ;
......@@ -1949,7 +1954,7 @@ public class ShoppingCartMCoffeeServiceImpl {
return baseResponse.getResult();
}
private BaseResponse<CheckCartRequest> checkAllCartGoodsForMCoffee(CheckCartRequest checkCartRequest) {
public BaseResponse<CheckCartRequest> checkAllCartGoodsForMCoffee(CheckCartRequest checkCartRequest) {
try {
ValidateShopProductRequest validateShopProductRequest = shoppingCartConvertAdapter.getValidateShopProductRequest(checkCartRequest);
ProductBaseResponse<ValiadShopProductResponse> valiadResponse = productClient.validateShopProductAboutReason(validateShopProductRequest);
......@@ -1967,6 +1972,7 @@ public class ShoppingCartMCoffeeServiceImpl {
if (CollectionUtils.isNotEmpty(validateResult.getFailureList())){
List<String> invalidSpu = new ArrayList<>();
List<String> notFoundSpu = new ArrayList<>();
List<String> numErrorSpu = new ArrayList<>();
List<String> changePriceSpu = new ArrayList<>();
List<String> disableCoupon = new ArrayList<>();
for (int i = 0; i < validateResult.getFailureList().size(); i++) {
......@@ -1996,16 +2002,22 @@ public class ShoppingCartMCoffeeServiceImpl {
cartGoods.setCartGoodsUid(null);
break;
}
if (111 == validaProduct.getCode() || 112 == validaProduct.getCode()) {
numErrorSpu.add(spuName);
if (StringUtils.isNotEmpty(couponName)){
disableCoupon.add(couponName);
}
cartGoodsStates.setHasInvalidGoods(true);
cartGoods.setCartGoodsUid(null);
break;
}
if (PRODUCT_PRICE_CHANGE == validaProduct.getCode()) {
changePriceSpu.add(spuName);
List<ProductTypeBeanDTO> productList =
validateResult.getFailureList().stream().map(ValiadShopProductResult::getProductType).collect(Collectors.toList());
shoppingCartConvertAdapter.updateCartGoodsInfoForMCoffee(cartGoods, productList);
shoppingCartConvertAdapter.updateCartGoodsInfo(cartGoods, validaProduct.getProductType(), validaProduct.getSubProductTypeMap());
}
if (PRODUCT_GROUP_PRICE_CHANGE == validaProduct.getCode()) {
changePriceSpu.add(spuName);
List<ProductTypeBeanDTO> productList = validateResult.getFailureList().stream().map(ValiadShopProductResult::getProductType).collect(Collectors.toList());
shoppingCartConvertAdapter.updateCartGoodsInfoForMCoffee(cartGoods, productList);
shoppingCartConvertAdapter.updateCartGoodsInfo(cartGoods, validaProduct.getProductType(), validaProduct.getSubProductTypeMap());
}
if (PRODUCT_GROUP_EMPTY == validaProduct.getCode()) {
cartGoodsStates.setHasInvalidGoods(true);
......@@ -2027,6 +2039,9 @@ public class ShoppingCartMCoffeeServiceImpl {
if (CollectionUtils.isNotEmpty(changePriceSpu)){
toastMsg = toastMsg.concat(CART_PRODUCT_PRICE_CHANGE.replace("$spuName",StringUtils.join(changePriceSpu,",")));
}
if (CollectionUtils.isNotEmpty(numErrorSpu)){
toastMsg = toastMsg.concat("您选择的【$spuName】不满足购买条件".replace("$spuName",StringUtils.join(numErrorSpu,",")));
}
if (CollectionUtils.isNotEmpty(disableCoupon)){
toastMsg = toastMsg.concat(COUPON_IS_DISABLE.replace("$couponName",StringUtils.join(disableCoupon,",")));
......@@ -2124,7 +2139,7 @@ public class ShoppingCartMCoffeeServiceImpl {
// cartGoodsList = checkCartGoods(partnerId, storeId, orderType, menuType, shoppingCartGoodsResponseVo, cartGoodsList);
List<CartGoods> temList = new ArrayList<>();
for (CartGoods goods : cartGoodsList) {
temList.addAll(checkCartGoods(partnerId, storeId, orderType, menuType, shoppingCartGoodsResponseVo, Arrays.asList(goods)));
temList.addAll(checkCartGoods(partnerId, storeId, orderType, menuType, shoppingCartGoodsResponseVo, Arrays.asList(goods), sessionId));
}
cartGoodsList = temList;
// 重新存储最新购物车
......
......@@ -203,7 +203,6 @@ public class CalculationServiceImpl {
});
for (int i = 0, len = cartGoodsList.size(); i < len; i++) {
CartGoods cartGoods = cartGoodsList.get(i);
// List<ShoppingCartGoodsDto.CartGoodsDetailDto> cartGoodsDetailDtos = shoppingCartConvertAdapter.convertCartGoods2DetailGoodsList(cartGoods, apportionGoodsList,duplicateGoodsMap);
List<ShoppingCartGoodsDto.CartGoodsDetailDto> cartGoodsDetailDtos = shoppingCartMccafeAdapter.convertCartGoods2DetailGoodsList(cartGoods, apportionGoodsList,duplicateGoodsMap);
cartGoodsDetailDtoList.addAll(cartGoodsDetailDtos);
}
......@@ -498,7 +497,7 @@ public class CalculationServiceImpl {
for (CartGoods cartGoods : cartGoodsList) {
// 设置商品原价与商品现价的初始值
long originalAmount = null != cartGoods.getOriginalPrice() ? cartGoods.getOriginalPrice()* cartGoods.getQty() : 0;
long amount = null != cartGoods.getOriginalPrice() ? cartGoods.getOriginalPrice()* cartGoods.getQty() : 0;
long amount = null != cartGoods.getFinalPrice() ? cartGoods.getFinalPrice()* cartGoods.getQty() : 0;
long packAmount = null != cartGoods.getPackPrice() ? cartGoods.getPackPrice()* cartGoods.getQty() : 0;
totalOriginalAmount += originalAmount;
totalAmount += amount;
......
......@@ -195,10 +195,15 @@ public class CouponDiscountCalculation {
*/
public void updateShoppingCartGoodsApportion(ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult, ShoppingCartGoodsDto shoppingCartGoodsDto, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo){
if (calculationDiscountResult == null || CollectionUtils.isEmpty(calculationDiscountResult.getDiscounts())
|| !calculationDiscountResult.getDiscounts().stream().anyMatch(discount -> (ActivityTypeEnum.TYPE_3.getCode().equals(discount.getType())
||(ActivityTypeEnum.TYPE_31.getCode().equals(discount.getType())) || (ActivityTypeEnum.TYPE_32.getCode().equals(discount.getType()))
||(ActivityTypeEnum.TYPE_37.getCode().equals(discount.getType())) ||(ActivityTypeEnum.TYPE_38.getCode().equals(discount.getType()))))) {
if (calculationDiscountResult == null
|| CollectionUtils.isEmpty(calculationDiscountResult.getDiscounts())
|| !calculationDiscountResult.getDiscounts().stream().anyMatch(
discount -> ActivityTypeEnum.TYPE_3.getCode().equals(discount.getType())
|| ActivityTypeEnum.TYPE_31.getCode().equals(discount.getType())
|| ActivityTypeEnum.TYPE_32.getCode().equals(discount.getType())
|| ActivityTypeEnum.TYPE_37.getCode().equals(discount.getType())
|| ActivityTypeEnum.TYPE_38.getCode().equals(discount.getType())
|| ActivityTypeEnum.TYPE_39.getCode().equals(discount.getType()))) {
return;
}
Map<String, Integer> extendTypeMap = calculationDiscountResult.getDiscounts().stream().filter(o -> o.getExtendType() != null)
......@@ -209,9 +214,13 @@ public class CouponDiscountCalculation {
if (CollectionUtils.isEmpty(couponDiscounts)) {
return;
}
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount> discounts = couponDiscounts.stream().filter(discount -> (ActivityTypeEnum.TYPE_3.getCode().equals(discount.getType())
|| (ActivityTypeEnum.TYPE_31.getCode().equals(discount.getType())) || (ActivityTypeEnum.TYPE_32.getCode().equals(discount.getType())
|| (ActivityTypeEnum.TYPE_37.getCode().equals(discount.getType())) || (ActivityTypeEnum.TYPE_38.getCode().equals(discount.getType()))))).collect(Collectors.toList());
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount> discounts = couponDiscounts.stream().filter(
discount -> (ActivityTypeEnum.TYPE_3.getCode().equals(discount.getType())
|| ActivityTypeEnum.TYPE_31.getCode().equals(discount.getType())
|| ActivityTypeEnum.TYPE_32.getCode().equals(discount.getType())
|| ActivityTypeEnum.TYPE_37.getCode().equals(discount.getType())
|| ActivityTypeEnum.TYPE_38.getCode().equals(discount.getType())
|| ActivityTypeEnum.TYPE_39.getCode().equals(discount.getType()))).collect(Collectors.toList());
if (CollectionUtils.isEmpty(discounts)) {
return;
}
......
......@@ -48,8 +48,6 @@ public class SetMealCalculation {
if (CollectionUtils.isEmpty(setMealProducts)) {
return;
}
//套餐可选商品现价
long productGroupTotalAmount = 0L;
// 存储当前享受限时特价折扣的商品数量
Map<String, Integer> numberMap = new HashMap<>();
// 当前商品行现价
......@@ -63,18 +61,6 @@ public class SetMealCalculation {
}
// cartGoods.setOriginalAmount(cartGoods.getOriginalPrice() * cartGoods.getQty());
cartGoods.setPackPrice(cartGoods.getPackPrice() * cartGoods.getQty());
// 可选商品现总价
productGroupTotalAmount = 0l;
long productGroupAmount =
null == cartGoods.getProductGroupList() ? 0 :
cartGoods.getProductGroupList().stream().mapToLong(t -> (null != t.getFinalPrice() ?
t.getFinalPrice():0) * (null != t.getQty() ? t.getQty():0)).sum();
productGroupTotalAmount += productGroupAmount * cartGoods.getQty();
// 固定商品现总价
long productComboAmount = cartGoods.getProductComboList().stream().mapToLong(t -> (null != t.getFinalPrice() ?
t.getFinalPrice():0) * (null != t.getQty() ? t.getQty():0)).sum();
long productComboTotalAmount = productComboAmount * cartGoods.getQty();
long materialPrice = 0l;
//套餐固定商品加料
......@@ -108,18 +94,13 @@ public class SetMealCalculation {
}
//如果是商品券商品,不重新计算套餐价格
if (StringUtils.isEmpty(cartGoods.getCouponCode())) {
Long amount = null != cartGoods.getFinalPrice() ? cartGoods.getFinalPrice() * cartGoods.getQty() + productGroupTotalAmount + materialPrice :
productGroupTotalAmount + productComboTotalAmount + materialPrice;
cartGoods.setAmount(amount);
}
Long comboOriginalPriceAmount = null != cartGoods.getOriginalAmount() ? cartGoods.getOriginalAmount() :
productComboTotalAmount;
cartGoods.setOriginalAmount(productGroupTotalAmount + comboOriginalPriceAmount + materialPrice);
cartGoods.setOriginalPrice(null != cartGoods.getOriginalPrice() ? cartGoods.getOriginalPrice() :
productComboTotalAmount);
cartGoods.setFinalPrice(null != cartGoods.getFinalPrice() ? cartGoods.getFinalPrice() :
productComboTotalAmount);
if (StringUtils.isEmpty(cartGoods.getCouponCode())
|| (null !=calculationDiscountResult.getMonthlyEnjoyCardDiscount()
&& StringUtils.isNotBlank(calculationDiscountResult.getMonthlyEnjoyCardDiscount().getCouponCode())
&& cartGoods.getCouponCode().equals(calculationDiscountResult.getMonthlyEnjoyCardDiscount().getCouponCode()))) {
cartGoods.setAmount(cartGoods.getAmount() + materialPrice);
cartGoods.setOriginalAmount(cartGoods.getOriginalAmount() + materialPrice);
}
// 套餐(固定商品)现价
// String toastMsg = getTotalAmount(cartGoods, productGroupAmount, numberMap, goodsMap);
......@@ -156,16 +137,8 @@ public class SetMealCalculation {
// 套餐优惠明细
for (CartGoods cartGoods : shoppingCartGoodsResponseVo.getProducts()) {
if (ObjectUtils.equals(GoodsTypeEnum.SET_MEAL_GOODS.getGoodsType(), cartGoods.getGoodsType()) && StringUtils.isBlank(cartGoods.getCouponCode())) {
// discountAmount=(套餐原价-套餐售价)*数量
// productGroupDiscountAmount=可选商品现价总和
// discountAmount-productGroupDiscountAmount: 当前商品行套餐商品总优惠= 套餐原总价-套餐现总价-套餐可选商品的现总价
// int discountAmount = (cartGoods.getOriginalPrice().intValue() - cartGoods.getFinalPrice().intValue()) * cartGoods.getQty();
int productGroupDiscountAmount = cartGoods.getProductGroupList().stream().mapToInt(t -> t.getFinalPrice().intValue() * t.getQty()).sum();
// totalDiscountAmount += discountAmount - productGroupDiscountAmount * cartGoods.getQty();
// 添加套餐父商品
ShoppingCartGoodsDto.CartGoodsDetailDto parentCartGoods = shoppingCartMccafeAdapter.convertCartGoods2DetailGoods(cartGoods, apportionGoods,duplicateGoodsMap);
// parentCartGoods.setTotalDiscountAmount(parentCartGoods.getTotalDiscountAmount()+ cartGoods.getOriginalAmount().intValue() - cartGoods.getAmount().intValue());
// parentCartGoods.getActivityDiscountsDtos().add(getActivityDiscountsDto(discountAmount - productGroupDiscountAmount * cartGoods.getQty()));
// 添加套餐固定商品&可选商品: 做均摊
parentCartGoods.setComboProducts(shoppingCartMccafeAdapter.convertComboxGoods2DetailGoods(cartGoods,parentCartGoods.getTotalDiscountAmount()));
cartGoodsDetailDtos.add(parentCartGoods);
......
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