Commit dc043628 by 周晓航

Merge branch 'KA-【华莱士】【半定制】一个订单多张优惠券使用场景-zxh' into qa

# Conflicts:
#	shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ShoppingCartNewServiceImpl.java
parents 0289531a ef2565a0
......@@ -225,6 +225,12 @@ public class ShoppingCartGoodsResponseVo extends ShoppingCartGoodsBaseResponseV
*/
private CartGoodsStates cartGoodsStates;
/**
* fisherman 一单多券, 剔除购物车内券商品的使用门槛
*
*/
private Long useCouponThreshold ;
@Data
public static class chooseGood {
......
......@@ -13,6 +13,9 @@
package cn.freemud.enums;
import java.util.Arrays;
import java.util.List;
public enum GoodsTypeEnum {
COMMON_GOODS(1, "正常商品"),
......@@ -21,15 +24,19 @@ public enum GoodsTypeEnum {
SET_MEAL_GOODS(3, "套餐商品"),
SKU_GOODS(4, "sku商品"),
SPU_GOODS(5, "spu商品"),
REDUCE_PRICE_GOODS(6,"超值加购商品"),
REDUCE_PRICE_GOODS(6, "超值加购商品"),
ALL_COUPON_GOODS(8, "万能券商品"),
VIRTUAL_GOODS(9,"虚拟商品"),
VIRTUAL_GOODS(9, "虚拟商品"),
BUY_M_SEND_N_COUPON(10, "买M送N券"),
MATERIAL(88, "有加料的商品"),
EXCEPTION_GOODS(99, "异常商品:商品菜单变化导致和购物车不商品匹配");
private Integer goodsType;
private String desc;
public static List<Integer> couponTypeList = Arrays.asList(GoodsTypeEnum.COUPON_GOODS.getGoodsType(),
GoodsTypeEnum.HG_COUPON_GOODS.getGoodsType(),
GoodsTypeEnum.BUY_M_SEND_N_COUPON.getGoodsType());
GoodsTypeEnum(Integer goodsType, String desc) {
this.goodsType = goodsType;
this.desc = desc;
......
......@@ -25,7 +25,7 @@ import cn.freemud.demo.entities.dto.goods.add.list.BaseListCartGoodsVO;
import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.calculate.ActivityCalculationDiscountRequestDto;
import cn.freemud.entities.dto.calculate.ActivityCalculationDiscountResponseDto;
import cn.freemud.entities.dto.activity.ActivityDiscountsDto;
import cn.freemud.entities.dto.GetMenuResponseDto.DataBean.RootNodeBean.ChildrenBeanFirst.ChildrenBeanSecond.ProductBean;
import cn.freemud.entities.dto.activity.ActivityQueryDto;
import cn.freemud.entities.dto.activity.ActivityQueryResponseDto;
import cn.freemud.entities.dto.activity.DiscountSharingDto;
......@@ -873,9 +873,9 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
}
updateForPopupWindow(shoppingCartGoodsResponseVo, premiumExchangeResponseVoBaseResponse.getResult().getShowType(), chooseSendGoodList, shoppingCartInfoRequestVo.getSendGoods());
}
// 添加购物车商品总价和加价购商品总价,现在是自己计算,后面需要优化为促销计算, 这段要删除
// ApiLog.info("fisherman 新算价 校验入参券是否可用new ",shoppingCartGoodsResponseVo,shoppingCartInfoRequestVo.getCouponCodes());
// 设置优惠券的使用门槛金额, 需要排除券的金额
Long useCouponThreshold = this.getUseCouponThreshold(shoppingCartGoodsResponseVo.getProducts());
shoppingCartGoodsResponseVo.setUseCouponThreshold(useCouponThreshold);
// 校验入参券是否可用
if (!checkAvailableCoupon(shoppingCartGoodsResponseVo, shoppingCartInfoRequestVo.getCouponCode())) {
return ResponseUtil.error(ResponseResult.SHOPPING_CART_COUPON_NOT_USE);
......@@ -883,6 +883,22 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
return ResponseUtil.success(shoppingCartGoodsResponseVo);
}
/**
* 获取 券使用的门槛信息
* @param products
* @return
*/
private Long getUseCouponThreshold(List<CartGoods> products) {
Long useCouponThreshold = 0L;
if (CollectionUtils.isNotEmpty(products)) {
// 过滤出 活动商品 以及 优惠券商品 求和
return products.stream().filter(p -> !GoodsTypeEnum.couponTypeList.contains(p.getGoodsType()) && Objects.isNull(p.getActivityType()))
.mapToLong(CartGoods::getOriginalAmount)
.sum();
}
return useCouponThreshold;
}
public void updateForPopupWindow(ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo, Integer showType, List<PremiumExchangeResponseVo.PremiumExchangeProduct> chooseSendGoodList,
List<ShoppingCartInfoRequestVo.SendGoods> sendGoods) {
if (Integer.valueOf("5").equals(showType) && !org.springframework.util.CollectionUtils.isEmpty(chooseSendGoodList)) {
......@@ -1234,19 +1250,6 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
shoppingCartGoodsDto.setSendPoint(calculationDiscountResult.getSendPointVo());
}
}
// fisherman 设置 商品的 productType 和商品的类型同步
List<ProductBeanDTO> productList = checkCartRequest.getProductList();
if (CollectionUtils.isNotEmpty(productList)) {
for (ShoppingCartGoodsDto.CartGoodsDetailDto product : shoppingCartGoodsDto.getProducts()) {
if (product.getProductType()==null) {
Optional<ProductBeanDTO> firstProduct = productList.stream().filter(p -> ObjectUtils.equals(p.getPid(), product.getSpuId())).findFirst();
if (!firstProduct.isPresent()) {
continue;
}
product.setProductType(firstProduct.get().getType());
}
}
}
return ResponseUtil.success(shoppingCartGoodsDto);
}
......
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