Commit 19a744de by 孙昱

sunyu::fixconflicts::resolve conflicts about merge feature banch to qa

parents 0395ad3d 1c36b24a
...@@ -210,37 +210,50 @@ public interface ShoppingCartBaseService { ...@@ -210,37 +210,50 @@ public interface ShoppingCartBaseService {
return CartResponseUtil.error(valiadResponse.getMessage(),checkCartRequest); return CartResponseUtil.error(valiadResponse.getMessage(),checkCartRequest);
} }
ValiadShopProductResponse validateResult = valiadResponse.getData(); ValiadShopProductResponse validateResult = valiadResponse.getData();
CartGoodsStates cartGoodsStates = new CartGoodsStates();
//非法商品(商品是否存在、商品是否处于上架状态)自动移除,返回前端提示 //非法商品(商品是否存在、商品是否处于上架状态)自动移除,返回前端提示
if (CollectionUtils.isNotEmpty(validateResult.getFailureList())){ if (CollectionUtils.isNotEmpty(validateResult.getFailureList())){
for (int i = 0; i < validateResult.getFailureList().size(); i++) { for (int i = 0; i < validateResult.getFailureList().size(); i++) {
checkCartRequest.getShoppingCartGoodsResponseVo().setChanged(true); checkCartRequest.getShoppingCartGoodsResponseVo().setChanged(true);
ValiadShopProductResult validaProduct = validateResult.getFailureList().get(i); ValiadShopProductResult validaProduct = validateResult.getFailureList().get(i);
checkCartRequest.getCartGoodsList().forEach(cartGoods -> { for (CartGoods cartGoods : checkCartRequest.getCartGoodsList()) {
String spuName = cartGoods.getSkuId().equals(validaProduct.getSkuId()) ? cartGoods.getSpuName() : ""; String spuName = cartGoods.getSkuId().equals(validaProduct.getSkuId()) ? cartGoods.getSpuName() : "";
switch (validaProduct.getCode()){ if (PRODUCT_DOWN == validaProduct.getCode()){
case PRODUCT_PRICE_CHANGE : cartGoodsStates.setHasInvalidGoods(true);
checkCartRequest.getShoppingCartGoodsResponseVo().setToastMsg(CART_PRODUCT_PRICE_CHANGE.replace("$spuName",spuName)); cartGoods.setCartGoodsUid(null);
checkCartRequest.getShoppingCartGoodsResponseVo().setToastMsg(CART_PRODUCT_INVALID_STATE.replace("$spuName",spuName));
break;
}
if (PRODUCT_NOTFOUND == validaProduct.getCode()){
cartGoodsStates.setHasInvalidGoods(true);
cartGoods.setCartGoodsUid(null);
checkCartRequest.getShoppingCartGoodsResponseVo().setToastMsg(CART_PRODUCT_NOT_FOUND.replace("$spuName",spuName));
break;
}
}
}
if (null == checkCartRequest.getShoppingCartGoodsResponseVo() || StringUtils.isEmpty(checkCartRequest.getShoppingCartGoodsResponseVo().getToastMsg()) ||
checkCartRequest.getShoppingCartGoodsResponseVo().getChanged()) {
for (int i = 0; i < validateResult.getFailureList().size(); i++) {
cartGoodsStates.setPriceChanged(true);
checkCartRequest.getShoppingCartGoodsResponseVo().setChanged(true);
ValiadShopProductResult validaProduct = validateResult.getFailureList().get(i);
checkCartRequest.getCartGoodsList().forEach(cartGoods -> {
String spuName = cartGoods.getSkuId().equals(validaProduct.getSkuId()) ? cartGoods.getSpuName() : "";
if (PRODUCT_PRICE_CHANGE == validaProduct.getCode()) {
checkCartRequest.getShoppingCartGoodsResponseVo().setToastMsg(CART_PRODUCT_PRICE_CHANGE.replace("$spuName", spuName));
List<ProductBeanDTO> productList = validateResult.getFailureList().stream().map(ValiadShopProductResult::getProductType).collect(Collectors.toList()); List<ProductBeanDTO> productList = validateResult.getFailureList().stream().map(ValiadShopProductResult::getProductType).collect(Collectors.toList());
shoppingCartAdapter.updateCartGoodsInfoNew(cartGoods, productList); shoppingCartAdapter.updateCartGoodsInfoNew(cartGoods, productList);
break; }
case PRODUCT_NOTFOUND: });
cartGoods.setCartGoodsUid(null); }
checkCartRequest.getShoppingCartGoodsResponseVo().setToastMsg(CART_PRODUCT_NOT_FOUND.replace("$spuName",spuName));
break;
case PRODUCT_DOWN:
cartGoods.setCartGoodsUid(null);
checkCartRequest.getShoppingCartGoodsResponseVo().setToastMsg(CART_PRODUCT_INVALID_STATE.replace("$spuName",spuName));
break;
default:
break;
}
});
} }
setToastMsgIfNotExist(checkCartRequest.getShoppingCartGoodsResponseVo(), ShoppingCartConstant.SHOPPING_CART_GOODS_CHANGE); setToastMsgIfNotExist(checkCartRequest.getShoppingCartGoodsResponseVo(), ShoppingCartConstant.SHOPPING_CART_GOODS_CHANGE);
checkCartRequest.getCartGoodsList().removeIf(k -> StringUtils.isEmpty(k.getCartGoodsUid())); checkCartRequest.getCartGoodsList().removeIf(k -> StringUtils.isEmpty(k.getCartGoodsUid()));
} }
List<ProductBeanDTO> productList = validateResult.getSuccessList().stream().map(ValiadShopProductResult::getProductType).collect(Collectors.toList()); List<ProductBeanDTO> productList = validateResult.getSuccessList().stream().map(ValiadShopProductResult::getProductType).collect(Collectors.toList());
CartGoodsStates cartGoodsStates = new CartGoodsStates();
for (CartGoods cartGoods : checkCartRequest.getCartGoodsList()) { for (CartGoods cartGoods : checkCartRequest.getCartGoodsList()) {
// 当goodsId为空或商品是商品券时直接跳过 // 当goodsId为空或商品是商品券时直接跳过
if (StringUtils.isEmpty(cartGoods.getGoodsId()) || Objects.equals(cartGoods.getGoodsType(), GoodsTypeEnum.COUPON_GOODS.getGoodsType())) { if (StringUtils.isEmpty(cartGoods.getGoodsId()) || Objects.equals(cartGoods.getGoodsType(), GoodsTypeEnum.COUPON_GOODS.getGoodsType())) {
......
...@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModelProperty; ...@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import org.hibernate.validator.constraints.NotEmpty; import org.hibernate.validator.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
/** /**
* All rights Reserved, Designed By www.freemud.cn * All rights Reserved, Designed By www.freemud.cn
* *
...@@ -27,4 +28,21 @@ public class QueryCartInfoRequestVo { ...@@ -27,4 +28,21 @@ public class QueryCartInfoRequestVo {
@ApiModelProperty(value = "门店id",required = true) @ApiModelProperty(value = "门店id",required = true)
@NotEmpty(message = "门店id不可为空") @NotEmpty(message = "门店id不可为空")
private String storeId; private String storeId;
@ApiModelProperty(value = "sessionId",required = true)
@NotEmpty(message = "用户sessionId不可为空")
private String sessionId;
@ApiModelProperty(value = "appId",required = true)
@NotEmpty(message = "appId不可为空")
private String appId;
@ApiModelProperty(value = "menuType",notes = "业务类型: 0 : 自提 1:外卖 2:微商城",required = true)
@NotEmpty(message ="业务类型不可为空")
private String menuType ;
@ApiModelProperty(value = "订单类型")
@NotNull(message = "订单类型不可为空")
private Integer orderType;
@ApiModelProperty(value = "收货地址id",notes = "svc卡支付外卖订单必传")
private String receiveId;
} }
\ No newline at end of file
...@@ -322,9 +322,23 @@ public class ShoppingCartMCoffeeServiceImpl { ...@@ -322,9 +322,23 @@ public class ShoppingCartMCoffeeServiceImpl {
} }
/**
* 券码用-查询购物车最新信息,计算优惠
* @param requestVo
* @return
*/
public BaseResponse getCartInfoByUser(QueryCartInfoRequestVo requestVo){ public BaseResponse getCartInfoByUser(QueryCartInfoRequestVo requestVo){
ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo = new ShoppingCartGoodsResponseVo();
// 获取用户信息
CustomerInfoVo assortmentCustomerInfoVo = getCustomerInfoVo(requestVo.getSessionId());
// 获取购物车商品? // 获取购物车商品?
List<CartGoods> cartGoodsList = assortmentSdkService.getShoppingCartForCoupon(requestVo.getPartnerId(), requestVo.getStoreId(), requestVo.getUserId(), "", shoppingCartBaseService); List<CartGoods> cartGoodsList = assortmentSdkService.getShoppingCartForCoupon(requestVo.getPartnerId(), requestVo.getStoreId(), requestVo.getUserId(), "", shoppingCartBaseService);
// 当couponCode不为空时,需参与价格计算
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = getCoupon(null, null, cartGoodsList);
// 促销活动的优惠金额计算
calculationService.updateShoppingCartGoodsDiscount(requestVo.getPartnerId(), requestVo.getStoreId(), requestVo.getUserId(), requestVo.getAppId(), requestVo.getOrderType(), assortmentCustomerInfoVo.isMemberPaid(), requestVo.getMenuType(), requestVo.getReceiveId(), null,
cartGoodsList, coupons, new ArrayList<>(), shoppingCartGoodsResponseVo);
List<CouponAvailableReq> resList = couponDiscountCalculation.buildAvailableCoupons(requestVo,cartGoodsList); List<CouponAvailableReq> resList = couponDiscountCalculation.buildAvailableCoupons(requestVo,cartGoodsList);
return ResponseUtil.success(resList); return ResponseUtil.success(resList);
} }
...@@ -435,7 +449,32 @@ public class ShoppingCartMCoffeeServiceImpl { ...@@ -435,7 +449,32 @@ public class ShoppingCartMCoffeeServiceImpl {
} }
// check购物车中所有商品 // check购物车中所有商品
cartGoodsList = checkCartGoods(partnerId, storeId, orderType, menuType, shoppingCartGoodsResponseVo, cartGoodsList); List<CartGoods> allCartGoodsList = new ArrayList<>();
CheckCartRequest checkCartRequest = checkCartGoodsForToPay(partnerId, storeId, orderType, menuType, shoppingCartGoodsResponseVo, cartGoodsList);
if (null != checkCartRequest) {
//商品不再售卖状态或价格变动,直接返回报错
if (null != checkCartRequest.getShoppingCartGoodsResponseVo()) {
com.freemud.sdk.api.assortment.shoppingcart.domain.ShoppingCartGoodsResponseVo cartGoodsResponseVo = checkCartRequest.getShoppingCartGoodsResponseVo();
if (cartGoodsResponseVo.getCartGoodsStates() != null && cartGoodsResponseVo.getCartGoodsStates().isHasInvalidGoods()) {
return ResponseUtil.error(ResponseResult.STORE_ITEM_CHECK_INVAILD);
}
if (cartGoodsResponseVo.getCartGoodsStates() != null && cartGoodsResponseVo.getCartGoodsStates().isPriceChanged()) {
return ResponseUtil.error(ResponseResult.SHOPPING_CART_ACTIVITY_CHANGE);
}
shoppingCartGoodsResponseVo.setToastMsg(cartGoodsResponseVo.getToastMsg());
}
allCartGoodsList = JSONArray.parseArray(JSONObject.toJSONString(checkCartRequest.getCartGoodsList()), CartGoods.class);
}
//加价购商品
List<CartGoods> reduceGoods = cartGoodsList.stream().filter(cartGoods -> cartGoods.getGoodsType() == GoodsTypeEnum.REDUCE_PRICE_GOODS.getGoodsType()).collect(Collectors.toList());
//添加商品为加价购商品
if (CollectionUtils.isNotEmpty(reduceGoods)) {
allCartGoodsList.addAll(reduceGoods);
}
//恢复套餐商品空键位
// checkNewCartGoods(allCartGoodsList,2,map);
// 重新存储最新购物车 // 重新存储最新购物车
assortmentSdkService.setShoppingCart(partnerId, storeId, userId, cartGoodsList, sessionId, tableNumber, shoppingCartBaseService); assortmentSdkService.setShoppingCart(partnerId, storeId, userId, cartGoodsList, sessionId, tableNumber, shoppingCartBaseService);
...@@ -985,6 +1024,29 @@ public class ShoppingCartMCoffeeServiceImpl { ...@@ -985,6 +1024,29 @@ public class ShoppingCartMCoffeeServiceImpl {
} }
/**
* 【去支付使用】购物车商品check,加购商品不在菜单不check
*/
private CheckCartRequest checkCartGoodsForToPay(String partnerId, String storeId, Integer orderType, String menuType,
ShoppingCartGoodsBaseResponseVo shoppingCartGoodsResponseVo, List<CartGoods> cartGoodsList) {
//去除套餐商品空键位
// Map<String, String> map = checkNewCartGoods(cartGoodsList,1,null);
//筛选数量不为0商品
cartGoodsList = cartGoodsList.stream().filter(cartGoods -> cartGoods.getQty() != 0).collect(Collectors.toList());
//筛选非加购商品--加价购商品不校验是否在菜单,不调用validateShopProduct
List<CartGoods> checkGoods = cartGoodsList.stream().filter(cartGoods -> cartGoods.getGoodsType() != GoodsTypeEnum.REDUCE_PRICE_GOODS.getGoodsType()).collect(Collectors.toList());
CheckCartRequest checkCartRequest = null;
if (CollectionUtils.isNotEmpty(checkGoods)) {
//当商品全部添加完毕,校验购物车商品(是否合法,上下架,点餐方式,是否在当前菜单中...),并移除非法商品
checkCartRequest = assortmentSdkService.checkShoppingCartSdk(checkGoods, partnerId,
storeId, shoppingCartGoodsResponseVo, orderType, "", menuType, shoppingCartBaseService);
}
return checkCartRequest;
}
private List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> getCoupon(String couponCode, String activityCode, List<CartGoods> cartGoodsList) { private List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> getCoupon(String couponCode, String activityCode, List<CartGoods> cartGoodsList) {
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = new ArrayList<>(); List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = new ArrayList<>();
......
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