Commit 7a2c5314 by huiyang.chen

Merge branch '2020/09/24-运费券-huiyang'

# Conflicts:
#	shopping-cart-application-service/src/main/java/cn/freemud/entities/dto/ActivityCalculationDiscountResponseDto.java
#	shopping-cart-application-service/src/main/java/cn/freemud/entities/dto/activity/ActivityDiscountsDto.java
#	shopping-cart-application-service/src/main/java/cn/freemud/enums/ResponseResult.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 708a08dc 93ceb348
......@@ -5,6 +5,7 @@ import cn.freemud.entities.vo.*;
import cn.freemud.service.impl.mcoffee.ShoppingCartMCoffeeServiceImpl;
import cn.freemud.service.impl.mcoffee.entity.CopyShoppingCartRequestVo;
import cn.freemud.service.impl.mcoffee.entity.MCoffeeAddGoodsRequestVo;
import cn.freemud.service.impl.mcoffee.entity.MCoffeeCardAddVo;
import cn.freemud.service.impl.mcoffee.entity.SwitchShoppingCartRequestVo;
import com.freemud.application.sdk.api.log.ApiAnnotation;
import com.freemud.application.sdk.api.log.LogParams;
......@@ -66,6 +67,15 @@ public class MCoffeeShoppingCartController {
/**
* 修改或者新增购物车中商品
*/
@ApiAnnotation(logMessage = "updateGoodsByCard")
@PostMapping(value = "/card/updateGoods")
public BaseResponse updateGoodsByCard(@Validated @LogParams @RequestBody MCoffeeCardAddVo request) {
return shoppingCartMCoffeeService.updateGoodsByCard(request);
}
/**
* 查询购物车信息
*/
@ApiAnnotation(logMessage = "listCartGoods")
......
......@@ -88,6 +88,10 @@ public class ActivityCalculationDiscountRequestDto {
*/
private String goodsCode;
/**
* 商品核销券号
*/
private String couponCode;
/**
* 商品ID
*/
private String goodsId;
......
......@@ -154,7 +154,9 @@ public class ActivityCalculationDiscountResponseDto {
private Integer type;
private Long thresholdAmount;
/**
* 运费月卡入机字段
*/
private String tenderId;
}
......
......@@ -52,6 +52,10 @@ public class CartGoods {
* 商品券code
*/
private String couponCode;
/**
* 商品券名称
*/
private String couponName;
private String spuId;
private String skuId;
......
......@@ -115,4 +115,9 @@ public class ShoppingCartInfoRequestVo extends BaseRequestVo {
private String ruleId;
}
/**
* 运费卡券
*/
private String freightCouponCode;
}
......@@ -91,6 +91,7 @@ public enum ResponseResult {
SHOPPING_CART_COUPON_CAN_NOT_USE("44024", "商品券不可用"),
SHOPPING_CART_HG_COUPON_NOT_EXIST("44027", "换购券不存在"),
SHOPPING_CART_LIMIT_ADD("44025", "加购数量超过限制"),
SHOPPING_CART_GOODS_CHECK_ERROR("44028", "当前餐盘中没有可用券的饮品"),
/**
* 订单状态码
......
......@@ -22,8 +22,13 @@ import cn.freemud.service.impl.AssortmentSdkService;
import cn.freemud.service.impl.FullSubtractionActivityServiceImpl;
import cn.freemud.service.impl.mcoffee.calculation.CalculationServiceImpl;
import cn.freemud.service.impl.mcoffee.calculation.CouponDiscountCalculation;
import cn.freemud.service.impl.mcoffee.entity.CopyShoppingCartRequestVo;
import cn.freemud.service.impl.mcoffee.entity.MCoffeeAddGoodsRequestVo;
import cn.freemud.service.impl.mcoffee.entity.MCoffeeCardAddVo;
import cn.freemud.service.impl.mcoffee.entity.SwitchShoppingCartRequestVo;
import cn.freemud.service.impl.mcoffee.entity.*;
import cn.freemud.service.thirdparty.CustomerApplicationClient;
import cn.freemud.utils.BeanUtil;
import cn.freemud.service.thirdparty.ProductClient;
import cn.freemud.utils.ResponseUtil;
import com.alibaba.fastjson.JSONArray;
......@@ -218,9 +223,9 @@ public class ShoppingCartMCoffeeServiceImpl {
throw new ServiceException(ResponseResult.SHOPPING_CART_COUPON_USED);
}
//同样商品券不能使用
if (StringUtils.isNotEmpty(couponCode)&& StringUtils.isNotEmpty(cartGoods.getCouponCode()) && goodsId.equals(cartGoods.getGoodsId())) {
/* if (StringUtils.isNotEmpty(couponCode)&& StringUtils.isNotEmpty(cartGoods.getCouponCode()) && goodsId.equals(cartGoods.getGoodsId())) {
throw new ServiceException(ResponseResult.SHOPPING_CART_GOODS_COUPON_CAN_NOT_USE);
}
}*/
}
}
//新增商品券
......@@ -286,7 +291,7 @@ public class ShoppingCartMCoffeeServiceImpl {
assortmentSdkService.setShoppingCart(partnerId, storeId, userId, cartGoodsList, sessionId, "", shoppingCartBaseService);
// 当couponCode不为空时,需参与价格计算
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = getCoupon(null, null, cartGoodsList);
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = getCoupon(null, null, cartGoodsList,null);
// 促销活动的优惠金额计算
calculationService.updateShoppingCartGoodsDiscount(partnerId, storeId, userId, appId, orderType, assortmentCustomerInfoVo.isMemberPaid(), menuType, receiveId, null,
cartGoodsList, coupons, new ArrayList<>(), shoppingCartGoodsResponseVo);
......@@ -355,7 +360,7 @@ public class ShoppingCartMCoffeeServiceImpl {
// }
// 当couponCode不为空时,需参与价格计算
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = getCoupon(couponCode, null, cartGoodsList);
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = getCoupon(couponCode, null, cartGoodsList,shoppingCartInfoRequestVo.getFreightCouponCode());
// 促销活动的优惠金额计算
calculationService.updateShoppingCartGoodsDiscount(partnerId, storeId, userId, appId, orderType, assortmentCustomerInfoVo.isMemberPaid(), menuType, receiveId, null,
......@@ -380,7 +385,7 @@ public class ShoppingCartMCoffeeServiceImpl {
// 获取购物车商品
List<CartGoods> cartGoodsList = assortmentSdkService.getShoppingCartForCoupon(requestVo.getPartnerId(), requestVo.getStoreId(), requestVo.getUserId(), "", shoppingCartBaseService);
// 当couponCode不为空时,需参与价格计算
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = getCoupon(null, null, cartGoodsList);
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = getCoupon(null, null, cartGoodsList,null);
// 促销活动的优惠金额计算
calculationService.updateShoppingCartGoodsDiscount(requestVo.getPartnerId(), requestVo.getStoreId(), requestVo.getUserId(), requestVo.getAppId(), requestVo.getOrderType(), assortmentCustomerInfoVo.isMemberPaid(), requestVo.getMenuType(), requestVo.getReceiveId(), null,
cartGoodsList, coupons, new ArrayList<>(), shoppingCartGoodsResponseVo);
......@@ -544,7 +549,7 @@ public class ShoppingCartMCoffeeServiceImpl {
assortmentSdkService.setShoppingCart(partnerId, storeId, userId, cartGoodsList, sessionId, tableNumber, shoppingCartBaseService);
// 当couponCode不为空时,需参与价格计算
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = getCoupon(couponCode, null, cartGoodsList);
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = getCoupon(couponCode, null, cartGoodsList,shoppingCartInfoRequestVo.getFreightCouponCode());
//加价购商品
List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList = shoppingCartInfoRequestVo.getSendGoods();
......@@ -615,7 +620,7 @@ public class ShoppingCartMCoffeeServiceImpl {
//清空商品券商品
clearCartCouponGoods(partnerId, toStoreId, userId, sessionId, cartGoodsList);
// 当couponCode不为空时,需参与价格计算
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = getCoupon(couponCode, null, cartGoodsList);
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = getCoupon(couponCode, null, cartGoodsList,null);
// 促销活动的优惠金额计算
calculationService.updateShoppingCartGoodsDiscount(partnerId, toStoreId, userId, appId, orderType, assortmentCustomerInfoVo.isMemberPaid(), menuType, receiveId, null,
......@@ -632,7 +637,7 @@ public class ShoppingCartMCoffeeServiceImpl {
//清空商品券商品
clearCartCouponGoods(partnerId, toStoreId, userId, sessionId, cartGoodsList);
// 当couponCode不为空时,需参与价格计算
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = getCoupon(couponCode, null, cartGoodsList);
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = getCoupon(couponCode, null, cartGoodsList,null);
// 促销活动的优惠金额计算
calculationService.updateShoppingCartGoodsDiscount(partnerId, toStoreId, userId, appId, orderType, assortmentCustomerInfoVo.isMemberPaid(), menuType, receiveId, null,
......@@ -1204,7 +1209,7 @@ public class ShoppingCartMCoffeeServiceImpl {
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,String freightCouponCode) {
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = new ArrayList<>();
if (StringUtils.isNotEmpty(couponCode)) {
......@@ -1213,6 +1218,12 @@ public class ShoppingCartMCoffeeServiceImpl {
coupon.setActivityCode(activityCode);
coupons.add(coupon);
}
if (StringUtils.isNotEmpty(freightCouponCode)) {
ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon coupon = new ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon();
coupon.setCode(freightCouponCode);
coupon.setActivityCode(activityCode);
coupons.add(coupon);
}
//购物车商品券
if (CollectionUtils.isNotEmpty(cartGoodsList)) {
......@@ -1373,4 +1384,123 @@ public class ShoppingCartMCoffeeServiceImpl {
}
}
public BaseResponse updateGoodsByCard(MCoffeeCardAddVo cardAddVo) {
// 参数校验
if (StringUtils.isEmpty(cardAddVo.getShopId())) {
return ResponseUtil.error(ResponseResult.SHOPPING_CART_SHOP_ID_NOT_EMPTY);
}
if (cardAddVo.getQty() != null && cardAddVo.getQty() < 0) {
return ResponseUtil.error(ResponseResult.SHOPPING_CART_ADD_ERROR);
}
String sessionId = cardAddVo.getSessionId();
// 获取用户信息
CustomerInfoVo assortmentCustomerInfoVo = getCustomerInfoVo(sessionId);
ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo = new ShoppingCartGoodsResponseVo();
String userId = assortmentCustomerInfoVo.getMemberId();
String partnerId = cardAddVo.getPartnerId();
String storeId = cardAddVo.getShopId();
String appId = cardAddVo.getAppId();
String spuId = cardAddVo.getSpuId();
String skuId = StringUtils.isNotBlank(cardAddVo.getSkuId()) ? cardAddVo.getSkuId() : "";
String goodsId = StringUtils.isEmpty(skuId) ? spuId : skuId;
String menuType = cardAddVo.getMenuType();
Integer orderType = cardAddVo.getOrderType();
String couponCode = cardAddVo.getCouponCode();
String receiveId = cardAddVo.getReceiveId();
// 查询购物车缓存
List<CartGoods> cartGoodsList = assortmentSdkService.getShoppingCart(partnerId, storeId, userId, null, null, shoppingCartBaseService);
// 如果购物车商品不为空, 则check购物车中所有商品
if (CollectionUtils.isNotEmpty(cartGoodsList)) {
// check购物车中所有商品
cartGoodsList = checkCartGoods(partnerId, storeId, orderType, menuType, shoppingCartGoodsResponseVo, cartGoodsList);
// 重新存储最新购物车
assortmentSdkService.setShoppingCart(partnerId, storeId, userId, cartGoodsList, sessionId, "", shoppingCartBaseService);
if (StringUtils.isNotEmpty(couponCode) && StringUtils.isNotEmpty(goodsId)) {
CartGoods couponGoods = cartGoodsList.stream().filter(t -> couponCode.equals(t.getCouponCode())).findFirst().orElse(null);
CartGoods cartGoods =new CartGoods();
if (couponGoods !=null) {
cartGoods = cartGoodsList.stream().filter(t -> (t.getGoodsId().equals(goodsId) && (!t.getCartGoodsUid().equals(couponGoods.getCartGoodsUid())))).findFirst().orElse(null);
}else {
cartGoods = cartGoodsList.stream().filter(t -> (t.getGoodsId().equals(goodsId))).findFirst().orElse(null);
}
if (cartGoods != null) {
if (cardAddVo.getIsSelect()) {
//修改购物车商品数量
UpdateShoppingCartGoodsQtyRequestVo vo = updateCartVo(cartGoods, cardAddVo, false);
updateGoodsQty(vo);
//添加商品券到购物车
MCoffeeAddGoodsRequestVo requestVo = addCartVO(cardAddVo, true);
addGoods(requestVo);
} else {
if (couponGoods != null) {
//删除购物车行,因为商品券再购物车始终是一
UpdateShoppingCartGoodsQtyRequestVo vo = updateCartVo(cartGoods, cardAddVo, false);
updateGoodsQty(vo);
if (cartGoods.getQty() >= 1) {
//修改购物车商品数量
UpdateShoppingCartGoodsQtyRequestVo requestVo = updateCartVo(couponGoods, cardAddVo, true);
updateGoodsQty(requestVo);
} else {
MCoffeeAddGoodsRequestVo requestVo = addCartVO(cardAddVo, false);
addGoods(requestVo);
}
}
}
}else {
if (couponGoods != null) {
//删除购物车行,因为商品券再购物车始终是一
UpdateShoppingCartGoodsQtyRequestVo vo = updateCartVo(couponGoods, cardAddVo, false);
updateGoodsQty(vo);
MCoffeeAddGoodsRequestVo requestVo = addCartVO(cardAddVo, false);
addGoods(requestVo);
}
}
cartGoodsList = assortmentSdkService.getShoppingCart(partnerId, storeId, userId, null, null, shoppingCartBaseService);
}
}
// 当couponCode不为空时,需参与价格计算
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = getCoupon(couponCode, null, cartGoodsList,null);
// 促销活动的优惠金额计算
calculationService.updateShoppingCartGoodsDiscount(partnerId, storeId, userId, appId, orderType, assortmentCustomerInfoVo.isMemberPaid(), menuType, receiveId, null,
cartGoodsList, coupons, new ArrayList<>(), shoppingCartGoodsResponseVo);
//设置更新响应信息
ShoppingCartInfoRequestVo shoppingCartInfoRequestVo =new ShoppingCartInfoRequestVo();
BeanUtil.convertBean(cardAddVo,shoppingCartInfoRequestVo);
setAddAndUpdateResponse(shoppingCartGoodsResponseVo, cartGoodsList, shoppingCartGoodsResponseVo.getToastMsg(), ShoppingCartConstant.QUERY_INFO, shoppingCartInfoRequestVo);
return ResponseUtil.success(shoppingCartGoodsResponseVo);
}
private UpdateShoppingCartGoodsQtyRequestVo updateCartVo(CartGoods cartGoods,MCoffeeCardAddVo cardAddVo,Boolean isAdd){
UpdateShoppingCartGoodsQtyRequestVo vo = new UpdateShoppingCartGoodsQtyRequestVo();
vo.setCartGoodsUid(cartGoods.getCartGoodsUid());
vo.setPartnerId(cardAddVo.getPartnerId());
if (isAdd){
vo.setQty(cartGoods.getQty() + 1);
}else {
vo.setQty(cartGoods.getQty() - 1);
}
vo.setOrderType(cardAddVo.getOrderType());
vo.setShopId(cardAddVo.getShopId());
vo.setMenuType(cardAddVo.getMenuType());
vo.setChannelType(cardAddVo.getChannelType());
vo.setAppId(cardAddVo.getAppId());
vo.setSessionId(cardAddVo.getSessionId());
return vo;
}
private MCoffeeAddGoodsRequestVo addCartVO(MCoffeeCardAddVo cardAddVo,Boolean isCoupon){
MCoffeeAddGoodsRequestVo requestVo = new MCoffeeAddGoodsRequestVo();
BeanUtil.convertBean(cardAddVo,requestVo);
requestVo.setQty(1);
if (isCoupon) {
requestVo.setCategoryName("DSPQ");
requestVo.setCouponCode(cardAddVo.getCouponCode());
}
return requestVo;
}
}
......@@ -372,6 +372,9 @@ public class CalculationServiceImpl {
calculationDiscountGoods.setGoodsQuantity(goodsQuantity);
calculationDiscountGoods.setOriginalPrice(originalPrice);
calculationDiscountGoods.setMemberDiscount(memberDiscount);
//新增咖啡月卡券券号
calculationDiscountGoods.setCouponCode(cartGoods.getCouponCode());
calculationDiscountGoods.setCartGoodsUid(cartGoods.getCartGoodsUid());
ArrayList<ActivityCalculationDiscountRequestDto.CalculationDiscountGoods.Material> materials = new ArrayList<>();
//可选搭配
......@@ -455,11 +458,8 @@ public class CalculationServiceImpl {
shoppingCartGoodsResponseVo.setTotalAmount(shoppingCartGoodsResponseVo.getTotalAmount() + totalPackgeAmount);
shoppingCartGoodsResponseVo.setNewPackAmount(totalPackgeAmount);
shoppingCartGoodsResponseVo.setTotalDiscountAmount(calculationDiscount == null ? 0L : calculationDiscount.getTotalDiscountAmount());
if(calculationDiscount != null && calculationDiscount.getDeliveryAmount() == null){
shoppingCartGoodsResponseVo.setDeliveryAmount(deliveryAmount);
shoppingCartGoodsResponseVo.setDiscountDeliveryAmount(deliveryAmount);
}
shoppingCartGoodsResponseVo.setDiscountDeliveryAmount(calculationDiscount == null ? 0L :calculationDiscount.getDistributionFee());
}
}
......@@ -75,9 +75,9 @@ public class CouponDiscountCalculation {
*/
public void updateShoppingCartGoodsDiscount(CouponPromotionVO couponPromotionVO, ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult, List<CartGoods> cartGoodsList, ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo) {
if (calculationDiscountResult == null || CollectionUtils.isEmpty(calculationDiscountResult.getCouponDiscounts())
|| !calculationDiscountResult.getCouponDiscounts().stream().anyMatch(discount -> (ActivityTypeEnum.TYPE_3.getCode().equals(discount.getActivityType())
||(ActivityTypeEnum.TYPE_31.getCode().equals(discount.getActivityType())) || (ActivityTypeEnum.TYPE_32.getCode().equals(discount.getActivityType())) ))) {
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())) ))) {
return;
}
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods> goodsList = calculationDiscountResult.getGoods();
......@@ -86,7 +86,7 @@ public class CouponDiscountCalculation {
}
Map<String, ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods> goodsMap = goodsList.parallelStream()
.collect(Collectors.toMap(ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods::getGoodsId, Function.identity(), (k1, k2) -> k1));
.collect(Collectors.toMap(ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods::getCartGoodsUid, Function.identity(), (k1, k2) -> k1));
for (CartGoods cartGoods : cartGoodsList) {
//商品券商品
......@@ -105,37 +105,48 @@ public class CouponDiscountCalculation {
// cartGoods.setSpuName(checkSpqInfoResponseDto.getSpuName());
// }
// }
if (goodsMap.get(cartGoods.getGoodsId()) == null) {
if (goodsMap.get(cartGoods.getCartGoodsUid()) == null) {
continue;
}
cartGoods.setAmount(goodsMap.get(cartGoods.getGoodsId()).getRealAmount());
cartGoods.setAmount(goodsMap.get(cartGoods.getCartGoodsUid()).getRealAmount());
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount> discounts = goodsMap.get(cartGoods.getCartGoodsUid()).getDiscounts();
if (CollectionUtils.isNotEmpty(discounts)) {
ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount goodsDiscount = discounts.stream().filter(t -> ActivityTypeEnum.TYPE_32.getCode().equals(t.getType())).findFirst().get();
cartGoods.setCouponName(goodsDiscount.getActivityName());
}
}
}
// 当couponCode不为空时,需计算优惠价格
long couponDiscount = 0;
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.CouponResults> couponResultsList = calculationDiscountResult.getCouponDiscounts();
if (CollectionUtils.isNotEmpty(couponResultsList)) {
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.CouponResults couponResults : couponResultsList) {
couponDiscount = couponDiscount + (couponResults.getDiscountAmount() == null ? 0 : couponResults.getDiscountAmount());
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount> discounts = calculationDiscountResult.getDiscounts();
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount> couponDiscounts = discounts.stream().filter(discount -> (ActivityTypeEnum.TYPE_3.getCode().equals(discount.getType())
|| (ActivityTypeEnum.TYPE_31.getCode().equals(discount.getType())) || (ActivityTypeEnum.TYPE_32.getCode().equals(discount.getType())))).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(couponDiscounts)) {
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount couponResults : couponDiscounts) {
couponDiscount = couponDiscount + (couponResults.getDiscount() == null ? 0 : couponResults.getDiscount());
}
}
shoppingCartGoodsResponseVo.setCouponDiscount(couponDiscount);
}
/**
* 商品均摊
*/
public void updateShoppingCartGoodsApportion(ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult, ShoppingCartGoodsDto shoppingCartGoodsDto){
if (calculationDiscountResult == null || CollectionUtils.isEmpty(calculationDiscountResult.getCouponDiscounts())
|| !calculationDiscountResult.getCouponDiscounts().stream().anyMatch(discount -> (ActivityTypeEnum.TYPE_3.getCode().equals(discount.getActivityType())
||(ActivityTypeEnum.TYPE_31.getCode().equals(discount.getActivityType())) || (ActivityTypeEnum.TYPE_32.getCode().equals(discount.getActivityType())) ))) {
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())) ))) {
return;
}
//订单级别券优惠
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.CouponResults> couponDiscounts = calculationDiscountResult.getCouponDiscounts();
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount> couponDiscounts = calculationDiscountResult.getDiscounts();
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())))).collect(Collectors.toList());
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods> goodsList = calculationDiscountResult.getGoods();
if (CollectionUtils.isEmpty(goodsList)) {
......@@ -143,19 +154,20 @@ public class CouponDiscountCalculation {
}
Map<String, ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods> goodsMap = goodsList.parallelStream()
.collect(Collectors.toMap(ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods::getGoodsId, Function.identity(), (k1, k2) -> k1));
.collect(Collectors.toMap(ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods::getCartGoodsUid, Function.identity(), (k1, k2) -> k1));
for (ShoppingCartGoodsDto.CartGoodsDetailDto cartGoods : shoppingCartGoodsDto.getProducts()) {
//商品券商品
if (StringUtils.isNotEmpty(cartGoods.getCouponCode())) {
List<ActivityDiscountsDto> productActivityDiscountsDtos = new ArrayList<>();
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.CouponResults couponDiscount : couponDiscounts) {
if(couponDiscount.getCouponCode().equals(cartGoods.getCouponCode())){
if (CollectionUtils.isNotEmpty(discounts)) {
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount couponDiscount : discounts) {
if (couponDiscount.getActivityCode().equals(cartGoods.getCouponCode())) {
ActivityDiscountsDto activityDiscountsDto = new ActivityDiscountsDto();
activityDiscountsDto.setActivityCode(couponDiscount.getCouponCode());
activityDiscountsDto.setActivityCode(couponDiscount.getActivityCode());
activityDiscountsDto.setActivityName(couponDiscount.getActivityName());
activityDiscountsDto.setActivityType(couponDiscount.getActivityType());
activityDiscountsDto.setDiscountAmount(0 - couponDiscount.getDiscountAmount());
activityDiscountsDto.setActivityType(couponDiscount.getType());
activityDiscountsDto.setDiscountAmount(0 - couponDiscount.getDiscount());
productActivityDiscountsDtos.add(activityDiscountsDto);
cartGoods.setTotalDiscountAmount(-activityDiscountsDto.getDiscountAmount());
......@@ -163,18 +175,18 @@ public class CouponDiscountCalculation {
cartGoods.setActivityDiscountsDtos(productActivityDiscountsDtos);
}
}
}
if (goodsMap.get(cartGoods.getSkuId()) == null) {
if (goodsMap.get(cartGoods.getCartGoodsUid()) == null) {
continue;
}
//商品券键位编号为空
if(StringUtils.isBlank(goodsMap.get(cartGoods.getSkuId()).getArtNo())){
if(StringUtils.isBlank(goodsMap.get(cartGoods.getCartGoodsUid()).getArtNo())){
//直接抛出异常导致同一个 普通商品 和万能券商品 校验有问题,故促销未返回,默认为空
// throw new ServiceException(ResponseResult.SHOPPING_CART_SEAT_EMPTY);
cartGoods.setCustomerCode("");
}else{
cartGoods.setCustomerCode(goodsMap.get(cartGoods.getSkuId()).getArtNo());
}
cartGoods.setCustomerCode(goodsMap.get(cartGoods.getCartGoodsUid()).getArtNo());
}
}
......
package cn.freemud.service.impl.mcoffee.entity;
import lombok.Data;
@Data
public class MCoffeeCardAddVo extends MCoffeeAddGoodsRequestVo{
/**
* true : 选中
* false : 取消选中
*/
private Boolean isSelect;
}
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