Commit 59432323 by zhiheng.zhang

Merge remote-tracking branch 'origin/master'

parents fea5af03 f1c00e66
package com.freemud.sdk.api.assortment.shoppingcart.adapter;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.freemud.application.sdk.api.log.ErrorLog;
import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.productcenter.domain.ProductBeanDTO;
import com.freemud.application.sdk.api.productcenter.request.product.valid.ProductAttributeValueType;
import com.freemud.application.sdk.api.productcenter.request.product.valid.ValidateShopProductRequest;
......@@ -11,6 +14,7 @@ import com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods;
import com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoodsStates;
import com.freemud.sdk.api.assortment.shoppingcart.request.CheckCartRequest;
import com.freemud.sdk.api.assortment.shoppingcart.request.GetProductInfoRequest;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils;
......@@ -32,6 +36,7 @@ import java.util.stream.Collectors;
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目的
*/
@Component
@Slf4j
public class ShoppingCartAdapter {
private static final String ATTRIBUTEID = "attributeId";
private static final String ATTRIBUTENAME = "attributeName";
......@@ -258,6 +263,7 @@ public class ShoppingCartAdapter {
* @param productBeans 购物车中所有的productId对应的商品详情
*/
public void updateCartGoodsInfoNew(CartGoods cartGoods, List<ProductBeanDTO> productBeans) {
log.info("【updateCartGoodsInfoNew】: cartGoods: {}, productBeans: {} ,trackingNo:{}", JSONObject.toJSONString(cartGoods), JSONObject.toJSONString(productBeans), LogThreadLocal.getTrackingNo());
try {
Optional<ProductBeanDTO> firstProduct = productBeans.stream().filter(p -> ObjectUtils.equals(p.getPid(), cartGoods.getSpuId())).findFirst();
if (!firstProduct.isPresent()) {
......
......@@ -38,6 +38,7 @@ import com.freemud.sdk.api.assortment.shoppingcart.request.CheckCartRequest;
import com.freemud.sdk.api.assortment.shoppingcart.request.GetProductInfoRequest;
import com.freemud.sdk.api.assortment.shoppingcart.util.CartResponseUtil;
import com.freemud.sdk.api.assortment.shoppingcart.util.DateTimeUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils;
......@@ -218,27 +219,36 @@ public interface ShoppingCartBaseService {
List<String> notFoundSpu = new ArrayList<>();
List<String> changePriceSpu = new ArrayList<>();
for (int i = 0; i < validateResult.getFailureList().size(); i++) {
checkCartRequest.getShoppingCartGoodsResponseVo().setChanged(true);
ValiadShopProductResult validaProduct = validateResult.getFailureList().get(i);
for (CartGoods cartGoods : checkCartRequest.getCartGoodsList()) {
checkCartRequest.getShoppingCartGoodsResponseVo().setChanged(true);
if (cartGoods.getSkuId().equals(validaProduct.getSkuId())) {
String spuName = null == validaProduct.getProductType() ? cartGoods.getSpuName() : validaProduct.getProductType().getName();
String spuName = null == validaProduct.getProductType() ? (StringUtils.isNotEmpty(cartGoods.getSkuName()) ? cartGoods.getSkuName() :
StringUtils.isNotEmpty(cartGoods.getName()) ? cartGoods.getName() : "") : validaProduct.getProductType().getName();
if (PRODUCT_DOWN == validaProduct.getCode()) {
invalidSpu.add(spuName);
if (StringUtils.isNotEmpty(spuName)){
invalidSpu.add(spuName);
}
cartGoodsStates.setHasInvalidGoods(true);
cartGoods.setCartGoodsUid(null);
break;
}
if (PRODUCT_NOTFOUND == validaProduct.getCode()) {
notFoundSpu.add(spuName);
if (StringUtils.isNotEmpty(spuName)) {
notFoundSpu.add(spuName);
}
cartGoodsStates.setHasInvalidGoods(true);
cartGoods.setCartGoodsUid(null);
break;
}
if (PRODUCT_PRICE_CHANGE == validaProduct.getCode()) {
changePriceSpu.add(spuName);
List<ProductBeanDTO> productList = validateResult.getFailureList().stream().map(ValiadShopProductResult::getProductType).collect(Collectors.toList());
if (StringUtils.isNotEmpty(spuName)) {
changePriceSpu.add(spuName);
}
List<ProductBeanDTO> productList = validateResult.getFailureList().stream().filter(f-> f.getCode() == PRODUCT_PRICE_CHANGE).map(ValiadShopProductResult::getProductType).collect(Collectors.toList());
shoppingCartAdapter.updateCartGoodsInfoNew(cartGoods, productList);
break;
}
}
}
......@@ -255,7 +265,6 @@ public interface ShoppingCartBaseService {
if (CollectionUtils.isNotEmpty(changePriceSpu)){
toastMsg = toastMsg.concat(CART_PRODUCT_PRICE_CHANGE.replace("$spuName",StringUtils.join(changePriceSpu,",")));
}
checkCartRequest.getShoppingCartGoodsResponseVo().setToastMsg(toastMsg);
setToastMsgIfNotExist(checkCartRequest.getShoppingCartGoodsResponseVo(), ShoppingCartConstant.SHOPPING_CART_GOODS_CHANGE);
......
......@@ -201,7 +201,7 @@ public class DeliveryAdapter {
ProductInfo deliveryComboProductInfo = new ProductInfo();
deliveryComboProductInfo.setProductCode(comboProduct.getProductId());
deliveryComboProductInfo.setProductName(comboProduct.getProductName());
deliveryComboProductInfo.setProductNumber(comboProduct.getNumber());
deliveryComboProductInfo.setProductNumber(comboProduct.getNumber()/productList.getNumber());
deliveryComboProductInfo.setProductPrice(comboProduct.getSalePrice().intValue());
//餐道使用
deliveryComboProductInfo.setCumulatedTotal(comboProduct.getNumber() * comboProduct.getSalePrice().intValue());
......
......@@ -160,7 +160,12 @@ public class OrderAdapter {
for (ShoppingCartGoodsDto.CartGoodsDetailDto cartGoodsDetailDto : cartGoodsDetailDtos) {
Integer qty = cartGoodsDetailDto.getQty();
if (qty > 0) {
CreateOrderProductRequest createOrderProductDto = convent2OrderProduct(cartGoodsDetailDto);
CreateOrderProductRequest createOrderProductDto = null;
if(mcCafePartnerId.equals(createOrderDto.getCompanyId())) {
createOrderProductDto = convent2MCCafeOrderProduct(cartGoodsDetailDto);
} else {
createOrderProductDto = convent2OrderProduct(cartGoodsDetailDto);
}
createOrderProductDto.setIgnoreProductPrice(1);
products.add(createOrderProductDto);
if (CollectionUtils.isNotEmpty(cartGoodsDetailDto.getActivityDiscountsDtos())) {
......@@ -2120,6 +2125,30 @@ public class OrderAdapter {
return createOrderProductDemoDto;
}
public CreateOrderProductRequest convent2MCCafeOrderProduct(ShoppingCartGoodsDto.CartGoodsDetailDto cartGoodsDetailDto) {
CreateOrderProductRequest createOrderProductDemoDto = convent2MCCafeOrderProductDemo(cartGoodsDetailDto);
//套餐
if (cartGoodsDetailDto.getProductType() != null && (cartGoodsDetailDto.getProductType() == ProductType.SETMEALPRODUCT.getCode() || cartGoodsDetailDto.getProductType() == ProductType.SETMEALPRODUCT_UPPRICE.getCode())) {
List<CreateOrderProductRequest> comboProducts = new ArrayList<>();
cartGoodsDetailDto.getComboProducts().forEach(product -> {
comboProducts.add(convent2OrderProductDemo(product));
});
createOrderProductDemoDto.setComboProduct(comboProducts);
}
//加料商品
if (cartGoodsDetailDto.getProductType() != null && (cartGoodsDetailDto.getProductType() == ProductType.MATERIALPRODUCT_UPPRICE.getCode())) {
List<CreateOrderProductRequest> materialProducts = new ArrayList<>();
cartGoodsDetailDto.getMaterialList().forEach(product -> {
materialProducts.add(convent2OrderProductMaterial(product));
});
createOrderProductDemoDto.setMaterialProduct(materialProducts);
}
createOrderProductDemoDto.setProductType(cartGoodsDetailDto.getProductType());
return createOrderProductDemoDto;
}
private CreateOrderProductRequest convent2OrderProductMaterial(ShoppingCartGoodsDto.CartGoodsDetailDto cartGoodsDetailDto) {
CreateOrderProductRequest createOrderProductDemoDto = new CreateOrderProductRequest();
createOrderProductDemoDto.setProductId(cartGoodsDetailDto.getSpuId());
......@@ -2180,6 +2209,41 @@ public class OrderAdapter {
return createOrderProductDemoDto;
}
public CreateOrderProductRequest convent2MCCafeOrderProductDemo(ShoppingCartGoodsDto.CartGoodsDetailDto cartGoodsDetailDto) {
CreateOrderProductRequest createOrderProductDemoDto = new CreateOrderProductRequest();
createOrderProductDemoDto.setProductId(cartGoodsDetailDto.getSpuId());
createOrderProductDemoDto.setProductName(cartGoodsDetailDto.getSpuName());
createOrderProductDemoDto.setSpecification(cartGoodsDetailDto.getSkuId());
createOrderProductDemoDto.setSpecificationName(cartGoodsDetailDto.getSkuName());
if (cartGoodsDetailDto.getProductType() != null && (cartGoodsDetailDto.getProductType() == ProductType.SETMEALPRODUCT.getCode()
|| cartGoodsDetailDto.getProductType() == ProductType.SETMEALPRODUCT_UPPRICE.getCode())) {
createOrderProductDemoDto.setPrice(0l);
} else {
createOrderProductDemoDto.setPrice(cartGoodsDetailDto.getOriginalPrice());
}
createOrderProductDemoDto.setSalePrice(cartGoodsDetailDto.getOriginalPrice());
createOrderProductDemoDto.setTotalDiscountAmount(cartGoodsDetailDto.getTotalDiscountAmount() == null ? 0 : cartGoodsDetailDto.getTotalDiscountAmount().longValue());
createOrderProductDemoDto.setNumber(cartGoodsDetailDto.getQty());
createOrderProductDemoDto.setPicture(cartGoodsDetailDto.getPicture());
createOrderProductDemoDto.setAddInfo(cartGoodsDetailDto.getAttributeNames());
createOrderProductDemoDto.setDiscountId(cartGoodsDetailDto.getCouponCode());
createOrderProductDemoDto.setProductType(cartGoodsDetailDto.getProductType());
createOrderProductDemoDto.setParentProductId(cartGoodsDetailDto.getParentProductId());
createOrderProductDemoDto.setIsFixedProduct(cartGoodsDetailDto.getIsFixedProduct());
createOrderProductDemoDto.setCustomerCode(cartGoodsDetailDto.getCustomerCode());
createOrderProductDemoDto.setProductCode(cartGoodsDetailDto.getProductCode());
createOrderProductDemoDto.setHasStockProudct(cartGoodsDetailDto.isStockLimit());
createOrderProductDemoDto.setWeight(cartGoodsDetailDto.getWeight());
createOrderProductDemoDto.setUnit(cartGoodsDetailDto.getUnit());
createOrderProductDemoDto.setStapleFood(0);
createOrderProductDemoDto.setCategory(cartGoodsDetailDto.getClassificationId());
createOrderProductDemoDto.setTax(cartGoodsDetailDto.getTax());
createOrderProductDemoDto.setTaxId(cartGoodsDetailDto.getTaxId());
createOrderProductDemoDto.setClassificationId(cartGoodsDetailDto.getClassificationId());
createOrderProductDemoDto.setClassificationName(cartGoodsDetailDto.getClassificationName());
return createOrderProductDemoDto;
}
/**
* 将促销的枚举 ActivityTypeEnum 和orderAccountType 关联映射
*/
......
......@@ -525,10 +525,27 @@ public class ShoppingCartMCoffeeServiceImpl {
if (CollectionUtils.isEmpty(cartGoodsList)) {
return ResponseUtil.success(shoppingCartGoodsResponseVo);
}
// 新门店check购物车中所有商品
cartGoodsList = checkCartGoods(partnerId, toStoreId, orderType, menuType, shoppingCartGoodsResponseVo, cartGoodsList);
List<CartGoods> onlyCheckGoodsList = new ArrayList<>();
if (requestVo.getOperationType() == ShoppingCartOperationType.UPDATE3.getCode()){
onlyCheckGoodsList.addAll(cartGoodsList);
// 新门店check购物车中所有商品
onlyCheckGoodsList = checkCartGoods(partnerId, toStoreId, orderType, menuType, shoppingCartGoodsResponseVo, onlyCheckGoodsList);
}else{
// 新门店check购物车中所有商品
cartGoodsList = checkCartGoods(partnerId, toStoreId, orderType, menuType, shoppingCartGoodsResponseVo, cartGoodsList);
}
if (requestVo.getOperationType() == ShoppingCartOperationType.UPDATE3.getCode()) {
if (StringUtils.isEmpty(shoppingCartGoodsResponseVo.getToastMsg())){
if (StringUtils.isNotEmpty(shoppingCartGoodsResponseVo.getToastMsg())){
//设置更新响应信息,校验失败只弹框提示消息,不切换门店,故将门店id重置为原来门店
shoppingCartGoodsResponseVo.setProducts(cartGoodsList);
shoppingCartInfoRequestVo.setShopId(requestVo.getFromShopId());
setAddAndUpdateResponse(shoppingCartGoodsResponseVo, cartGoodsList, shoppingCartGoodsResponseVo.getToastMsg(), ShoppingCartConstant.QUERY_INFO, shoppingCartInfoRequestVo);
return ResponseUtil.success(shoppingCartGoodsResponseVo);
}else {
// 新门店check购物车中所有商品
cartGoodsList = checkCartGoods(partnerId, toStoreId, orderType, menuType, shoppingCartGoodsResponseVo, cartGoodsList);
// 重新存储新门店购物车
assortmentSdkService.setShoppingCart(partnerId, toStoreId, userId, cartGoodsList, sessionId, "", shoppingCartBaseService);
//清空商品券商品
......@@ -542,8 +559,6 @@ public class ShoppingCartMCoffeeServiceImpl {
//设置更新响应信息
setAddAndUpdateResponse(shoppingCartGoodsResponseVo, cartGoodsList, shoppingCartGoodsResponseVo.getToastMsg(), ShoppingCartConstant.QUERY_INFO, shoppingCartInfoRequestVo);
shoppingCartGoodsResponseVo.setChanged(false);
}else {
return ResponseUtil.success(shoppingCartGoodsResponseVo);
}
}
// 新门店check购物车中所有商品
......@@ -640,7 +655,11 @@ public class ShoppingCartMCoffeeServiceImpl {
cartGoods.setSpuId(orderItem.getProductId());
cartGoods.setSkuId(orderItem.getProductSpec());
if(6 == orderItem.getProductType()) {
cartGoods.setGoodsType(3);
cartGoods.setGoodsType(com.freemud.sdk.api.assortment.shoppingcart.constant.GoodsTypeEnum.SET_MEAL_GOODS.getGoodsType());
} else if(10 ==orderItem.getProductType()) {
cartGoods.setGoodsType(com.freemud.sdk.api.assortment.shoppingcart.constant.GoodsTypeEnum.SKU_GOODS.getGoodsType());
} else {
cartGoods.setGoodsType(com.freemud.sdk.api.assortment.shoppingcart.constant.GoodsTypeEnum.COMMON_GOODS.getGoodsType());
}
if(("早餐啡常搭".equals(orderItem.getProductName()) && "早餐啡常搭".equals(orderItem.getProductSpecName()))
|| ("啡常搭".equals(orderItem.getProductName()) && "啡常搭".equals(orderItem.getProductSpecName()))) {
......
......@@ -204,18 +204,18 @@ public class CalculationServiceImpl {
}
//订单级别券优惠
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.CouponResults discount : calculationDiscountResult.getCouponDiscounts()) {
int discountAmount = (discount.getDiscountAmount() == null) ? 0 : discount.getDiscountAmount();
Integer discountType = discount.getActivityType();
if (discountType != null && discountAmount > 0) {
ActivityDiscountsDto activityDiscountsDto = new ActivityDiscountsDto();
activityDiscountsDto.setActivityCode(discount.getCouponCode());
activityDiscountsDto.setActivityName(discount.getActivityName());
activityDiscountsDto.setActivityType(discountType);
activityDiscountsDto.setDiscountAmount(0 - discountAmount);
activityDiscountsDtos.add(activityDiscountsDto);
}
}
// for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.CouponResults discount : calculationDiscountResult.getCouponDiscounts()) {
// int discountAmount = (discount.getDiscountAmount() == null) ? 0 : discount.getDiscountAmount();
// Integer discountType = discount.getActivityType();
// if (discountType != null && discountAmount > 0) {
// ActivityDiscountsDto activityDiscountsDto = new ActivityDiscountsDto();
// activityDiscountsDto.setActivityCode(discount.getCouponCode());
// activityDiscountsDto.setActivityName(discount.getActivityName());
// activityDiscountsDto.setActivityType(discountType);
// activityDiscountsDto.setDiscountAmount(0 - discountAmount);
// activityDiscountsDtos.add(activityDiscountsDto);
// }
// }
//过滤出加价购
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount> addMoneyDiscounts = discounts.stream().filter(discount -> ActivityTypeEnum.TYPE_81.getCode().equals(discount.getType())).collect(Collectors.toList());
......
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