Commit 92f25048 by ping.wu

Merge branches 'feature/20210816_买M赠N券_wuping' and 'master' of…

Merge branches 'feature/20210816_买M赠N券_wuping' and 'master' of http://gitlab.freemud.com/order-group-application/order-group

# Conflicts:
#	shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ShoppingCartNewServiceImpl.java
#	shopping-cart-application-service/src/main/java/cn/freemud/service/impl/calculate/CalculationSharingDiscountService.java
parents 5d85b30c 2299a71b
...@@ -3860,6 +3860,7 @@ public class OrderSdkAdapter { ...@@ -3860,6 +3860,7 @@ public class OrderSdkAdapter {
couponCodeVerificationProductDto.setPid(pid); couponCodeVerificationProductDto.setPid(pid);
couponCodeVerificationProductDto.setConsume_num(productDiscount.getDiscountQty()); couponCodeVerificationProductDto.setConsume_num(productDiscount.getDiscountQty());
couponCodeVerificationProductDto.setSeq(i + 1); couponCodeVerificationProductDto.setSeq(i + 1);
couponCodeVerificationProductDto.setRedeem_price(new BigDecimal(productBean.getPrice()));
products.add(couponCodeVerificationProductDto); products.add(couponCodeVerificationProductDto);
} }
} }
......
...@@ -21,6 +21,11 @@ public enum GoodsTypeEnum { ...@@ -21,6 +21,11 @@ public enum GoodsTypeEnum {
SET_MEAL_GOODS(3, "套餐商品"), SET_MEAL_GOODS(3, "套餐商品"),
SKU_GOODS(4, "sku商品"), SKU_GOODS(4, "sku商品"),
SPU_GOODS(5, "spu商品"), SPU_GOODS(5, "spu商品"),
REDUCE_PRICE_GOODS(6,"超值加购商品"),
ALL_COUPON_GOODS(8, "万能券商品"),
VIRTUAL_GOODS(9,"虚拟商品"),
BUY_M_SEND_N_COUPON(10, "买M送N券"),
MATERIAL(88, "有加料的商品"),
EXCEPTION_GOODS(99, "异常商品:商品菜单变化导致和购物车不商品匹配"); EXCEPTION_GOODS(99, "异常商品:商品菜单变化导致和购物车不商品匹配");
private Integer goodsType; private Integer goodsType;
......
...@@ -232,7 +232,9 @@ public interface ShoppingCartBaseService { ...@@ -232,7 +232,9 @@ public interface ShoppingCartBaseService {
CartGoodsStates cartGoodsStates = new CartGoodsStates(); 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()) || Objects.equals(cartGoods.getGoodsType(), GoodsTypeEnum.HG_COUPON_GOODS.getGoodsType())) { if (StringUtils.isEmpty(cartGoods.getGoodsId()) || Objects.equals(cartGoods.getGoodsType(), GoodsTypeEnum.COUPON_GOODS.getGoodsType())
|| Objects.equals(cartGoods.getGoodsType(), GoodsTypeEnum.HG_COUPON_GOODS.getGoodsType())
|| Objects.equals(cartGoods.getGoodsType(), GoodsTypeEnum.BUY_M_SEND_N_COUPON.getGoodsType())) {
continue; continue;
} }
shoppingCartAdapter.updateCartGoodsInfoNew(cartGoods, productList); shoppingCartAdapter.updateCartGoodsInfoNew(cartGoods, productList);
......
...@@ -920,7 +920,8 @@ public class CreateOrderAdapter { ...@@ -920,7 +920,8 @@ public class CreateOrderAdapter {
.accountType(getQueryOrderAccountType(getOrderAccountType(activityDiscountsDto.getActivityType()))) .accountType(getQueryOrderAccountType(getOrderAccountType(activityDiscountsDto.getActivityType())))
.sequence(createOrderProductDto.getSequence()) .sequence(createOrderProductDto.getSequence())
.productId(material.getSpuId()) .productId(material.getSpuId())
.discountQty(createOrderProductDto.getNumber()) .discountQty((activityDiscountsDto.getActualActivityGoodsNumber() == null || activityDiscountsDto.getActualActivityGoodsNumber() == 0)
? createOrderProductDto.getNumber() : activityDiscountsDto.getActualActivityGoodsNumber())
.build(); .build();
orderAccountDtos.add(createOrderAccountDto); orderAccountDtos.add(createOrderAccountDto);
} }
......
...@@ -464,7 +464,8 @@ public class OrderAdapter { ...@@ -464,7 +464,8 @@ public class OrderAdapter {
.accountType(getQueryOrderAccountType(getOrderAccountType(activityDiscountsDto.getActivityType()))) .accountType(getQueryOrderAccountType(getOrderAccountType(activityDiscountsDto.getActivityType())))
.sequence(createOrderProductDto.getSequence()) .sequence(createOrderProductDto.getSequence())
.productId(createOrderProductDto.getSpecification()) .productId(createOrderProductDto.getSpecification())
.discountQty(createOrderProductDto.getNumber()) .discountQty((activityDiscountsDto.getActualActivityGoodsNumber() == null || activityDiscountsDto.getActualActivityGoodsNumber() == 0)
? createOrderProductDto.getNumber() : activityDiscountsDto.getActualActivityGoodsNumber())
.build(); .build();
orderAccountDtos.add(createOrderAccountDto); orderAccountDtos.add(createOrderAccountDto);
} }
......
...@@ -50,6 +50,7 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -50,6 +50,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -148,6 +149,7 @@ public class PlatformCouponRelationServiceImpl implements CouponRelationService ...@@ -148,6 +149,7 @@ public class PlatformCouponRelationServiceImpl implements CouponRelationService
couponCodeVerificationProductDto.setPID(pid); couponCodeVerificationProductDto.setPID(pid);
couponCodeVerificationProductDto.setConsume_num(productDiscount.getDiscountQty()); couponCodeVerificationProductDto.setConsume_num(productDiscount.getDiscountQty());
couponCodeVerificationProductDto.setSeq(i + 1); couponCodeVerificationProductDto.setSeq(i + 1);
couponCodeVerificationProductDto.setRedeem_price(new BigDecimal(productBean.getPrice()));
products.add(couponCodeVerificationProductDto); products.add(couponCodeVerificationProductDto);
} }
} }
......
...@@ -358,7 +358,8 @@ public class ActivityAdapter { ...@@ -358,7 +358,8 @@ public class ActivityAdapter {
List<String> couponCodes = discountResult.getDiscounts().stream().filter(discount -> Objects.equals(discount.getType(),ActivityTypeEnum.TYPE_3.getCode()) List<String> couponCodes = discountResult.getDiscounts().stream().filter(discount -> Objects.equals(discount.getType(),ActivityTypeEnum.TYPE_3.getCode())
|| Objects.equals(discount.getType(),ActivityTypeEnum.TYPE_31.getCode()) || Objects.equals(discount.getType(),ActivityTypeEnum.TYPE_31.getCode())
|| Objects.equals(discount.getType(),ActivityTypeEnum.TYPE_32.getCode()) || Objects.equals(discount.getType(),ActivityTypeEnum.TYPE_32.getCode())
|| Objects.equals(discount.getType(),ActivityTypeEnum.TYPE_33.getCode())).map(CalculationSharingDiscountResponseDto.CalculationDiscountResult.Discount::getActivityCode).collect(Collectors.toList()); || Objects.equals(discount.getType(),ActivityTypeEnum.TYPE_33.getCode())
|| Objects.equals(discount.getType(),ActivityTypeEnum.TYPE_330.getCode())).map(CalculationSharingDiscountResponseDto.CalculationDiscountResult.Discount::getActivityCode).collect(Collectors.toList());
couponAvailableCartInfo.setCouponCodes(couponCodes); couponAvailableCartInfo.setCouponCodes(couponCodes);
totalMealDiscountAmount = discountResult.getDiscounts().stream().filter(goodsDiscount -> Objects.equals(goodsDiscount.getType(),ActivityTypeEnum.TYPE_310.getCode())).mapToLong(CalculationSharingDiscountResponseDto.CalculationDiscountResult.Discount::getDiscount).sum(); totalMealDiscountAmount = discountResult.getDiscounts().stream().filter(goodsDiscount -> Objects.equals(goodsDiscount.getType(),ActivityTypeEnum.TYPE_310.getCode())).mapToLong(CalculationSharingDiscountResponseDto.CalculationDiscountResult.Discount::getDiscount).sum();
...@@ -380,8 +381,11 @@ public class ActivityAdapter { ...@@ -380,8 +381,11 @@ public class ActivityAdapter {
Long mealDiscountAmount = 0L;//套餐优惠不算在内 Long mealDiscountAmount = 0L;//套餐优惠不算在内
if(CollectionUtils.isNotEmpty(discountGood.getDiscounts())){ if(CollectionUtils.isNotEmpty(discountGood.getDiscounts())){
Optional<String> goodCoupon = discountGood.getDiscounts().stream().filter(goodsDiscount -> Objects.equals(goodsDiscount.getType(),ActivityTypeEnum.TYPE_32.getCode()) Optional<String> goodCoupon = discountGood.getDiscounts().stream().filter(
|| Objects.equals(goodsDiscount.getType(),ActivityTypeEnum.TYPE_33.getCode())).map(CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount::getActivityCode).findFirst(); goodsDiscount -> Objects.equals(goodsDiscount.getType(),ActivityTypeEnum.TYPE_32.getCode())
|| Objects.equals(goodsDiscount.getType(),ActivityTypeEnum.TYPE_33.getCode())
|| Objects.equals(goodsDiscount.getType(),ActivityTypeEnum.TYPE_330.getCode())
).map(CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount::getActivityCode).findFirst();
cartProduct.setCouponCode(goodCoupon!=null && goodCoupon.isPresent()?goodCoupon.get():null); cartProduct.setCouponCode(goodCoupon!=null && goodCoupon.isPresent()?goodCoupon.get():null);
mealDiscountAmount = discountGood.getDiscounts().stream().filter(goodsDiscount -> Objects.equals(goodsDiscount.getType(),ActivityTypeEnum.TYPE_310.getCode())).mapToLong(CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount::getDiscount).sum(); mealDiscountAmount = discountGood.getDiscounts().stream().filter(goodsDiscount -> Objects.equals(goodsDiscount.getType(),ActivityTypeEnum.TYPE_310.getCode())).mapToLong(CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount::getDiscount).sum();
...@@ -424,7 +428,8 @@ public class ActivityAdapter { ...@@ -424,7 +428,8 @@ public class ActivityAdapter {
List<String> couponCodes = discountResult.getCouponDiscounts().stream().filter(discount -> Objects.equals(discount.getActivityType(),ActivityTypeEnum.TYPE_3.getCode()) List<String> couponCodes = discountResult.getCouponDiscounts().stream().filter(discount -> Objects.equals(discount.getActivityType(),ActivityTypeEnum.TYPE_3.getCode())
|| Objects.equals(discount.getActivityType(),ActivityTypeEnum.TYPE_31.getCode()) || Objects.equals(discount.getActivityType(),ActivityTypeEnum.TYPE_31.getCode())
|| Objects.equals(discount.getActivityType(),ActivityTypeEnum.TYPE_32.getCode()) || Objects.equals(discount.getActivityType(),ActivityTypeEnum.TYPE_32.getCode())
|| Objects.equals(discount.getActivityType(),ActivityTypeEnum.TYPE_33.getCode())).map(ActivityCalculationDiscountResponseDto.CalculationDiscountResult.CouponResults::getCouponCode).collect(Collectors.toList()); || Objects.equals(discount.getActivityType(),ActivityTypeEnum.TYPE_33.getCode())
|| Objects.equals(discount.getActivityType(),ActivityTypeEnum.TYPE_330.getCode())).map(ActivityCalculationDiscountResponseDto.CalculationDiscountResult.CouponResults::getCouponCode).collect(Collectors.toList());
couponAvailableCartInfo.setCouponCodes(couponCodes); couponAvailableCartInfo.setCouponCodes(couponCodes);
totalMealDiscountAmount = discountResult.getDiscounts().stream().filter(goodsDiscount -> Objects.equals(goodsDiscount.getType(),ActivityTypeEnum.TYPE_310.getCode())).mapToLong(ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount::getDiscount).sum(); totalMealDiscountAmount = discountResult.getDiscounts().stream().filter(goodsDiscount -> Objects.equals(goodsDiscount.getType(),ActivityTypeEnum.TYPE_310.getCode())).mapToLong(ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount::getDiscount).sum();
...@@ -440,8 +445,10 @@ public class ActivityAdapter { ...@@ -440,8 +445,10 @@ public class ActivityAdapter {
Pair<Long,Long> pair = getSmallMaterialAmount(discountGood.getSmallMaterial());//value1=总实付 value2=总优惠 Pair<Long,Long> pair = getSmallMaterialAmount(discountGood.getSmallMaterial());//value1=总实付 value2=总优惠
Long mealDiscountAmount = 0L;//套餐优惠不算在内 Long mealDiscountAmount = 0L;//套餐优惠不算在内
if(CollectionUtils.isNotEmpty(discountGood.getDiscounts())){ if(CollectionUtils.isNotEmpty(discountGood.getDiscounts())){
Optional<String> goodCoupon = discountGood.getDiscounts().stream().filter(goodsDiscount -> Objects.equals(goodsDiscount.getType(),ActivityTypeEnum.TYPE_32.getCode()) Optional<String> goodCoupon = discountGood.getDiscounts().stream().filter(
|| Objects.equals(goodsDiscount.getType(),ActivityTypeEnum.TYPE_33.getCode())).map(ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount::getActivityCode).findFirst(); goodsDiscount -> Objects.equals(goodsDiscount.getType(),ActivityTypeEnum.TYPE_32.getCode())
|| Objects.equals(goodsDiscount.getType(),ActivityTypeEnum.TYPE_33.getCode())
|| Objects.equals(goodsDiscount.getType(),ActivityTypeEnum.TYPE_330.getCode())).map(ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount::getActivityCode).findFirst();
cartProduct.setCouponCode(goodCoupon!=null && goodCoupon.isPresent()?goodCoupon.get():null); cartProduct.setCouponCode(goodCoupon!=null && goodCoupon.isPresent()?goodCoupon.get():null);
mealDiscountAmount = discountGood.getDiscounts().stream().filter(goodsDiscount -> Objects.equals(goodsDiscount.getType(),ActivityTypeEnum.TYPE_310.getCode())).mapToLong(ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount::getDiscount).sum(); mealDiscountAmount = discountGood.getDiscounts().stream().filter(goodsDiscount -> Objects.equals(goodsDiscount.getType(),ActivityTypeEnum.TYPE_310.getCode())).mapToLong(ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount::getDiscount).sum();
......
...@@ -36,6 +36,7 @@ public enum ActivityTypeEnum { ...@@ -36,6 +36,7 @@ public enum ActivityTypeEnum {
TYPE_31(31, "折扣券"), TYPE_31(31, "折扣券"),
TYPE_32(32, "商品券"), TYPE_32(32, "商品券"),
TYPE_33(33, "换购券"), TYPE_33(33, "换购券"),
TYPE_330(330, "买M赠N券"),
TYPE_34(34, "配送券"), TYPE_34(34, "配送券"),
TYPE_37(37, "月享卡种子券"), TYPE_37(37, "月享卡种子券"),
TYPE_35(35, "买3赠1券"), TYPE_35(35, "买3赠1券"),
......
...@@ -6,7 +6,8 @@ public enum CouponTypeEnum { ...@@ -6,7 +6,8 @@ public enum CouponTypeEnum {
TYPE_1(1, "代金券"), TYPE_1(1, "代金券"),
TYPE_3(3, "折扣券"), TYPE_3(3, "折扣券"),
TYPE_4(4, "换购券"), TYPE_4(4, "换购券"),
TYPE_5(5, "配送券"); TYPE_5(5, "配送券"),
TYPE_7(7, "买M赠N券");
private Integer code; private Integer code;
......
...@@ -24,6 +24,7 @@ public enum GoodsTypeEnum { ...@@ -24,6 +24,7 @@ public enum GoodsTypeEnum {
REDUCE_PRICE_GOODS(6,"超值加购商品"), REDUCE_PRICE_GOODS(6,"超值加购商品"),
ALL_COUPON_GOODS(8, "万能券商品"), ALL_COUPON_GOODS(8, "万能券商品"),
VIRTUAL_GOODS(9,"虚拟商品"), VIRTUAL_GOODS(9,"虚拟商品"),
BUY_M_SEND_N_COUPON(10, "买M送N券"),
MATERIAL(88, "有加料的商品"), MATERIAL(88, "有加料的商品"),
EXCEPTION_GOODS(99, "异常商品:商品菜单变化导致和购物车不商品匹配"); EXCEPTION_GOODS(99, "异常商品:商品菜单变化导致和购物车不商品匹配");
private Integer goodsType; private Integer goodsType;
......
...@@ -28,6 +28,7 @@ public enum ShoppingCartPromotionEnum { ...@@ -28,6 +28,7 @@ public enum ShoppingCartPromotionEnum {
Material(12, "MaterialPromotionService"), Material(12, "MaterialPromotionService"),
// 集点活动类 // 集点活动类
GATHER_SPOT(13, "gatherSpotPromotionService"), GATHER_SPOT(13, "gatherSpotPromotionService"),
BUY_M_SEND_N_COUPON(14, "buyMSendNCouponDiscountService"),
MEMBER_DISCOUNT_NEw(27, "memberDiscountService"); MEMBER_DISCOUNT_NEw(27, "memberDiscountService");
private Integer type; private Integer type;
......
...@@ -137,7 +137,7 @@ public interface ShoppingCartNewService { ...@@ -137,7 +137,7 @@ public interface ShoppingCartNewService {
} }
/** /**
* 换购券 * 换购券 买M赠N券
* *
* @param partnerId * @param partnerId
* @param storeId * @param storeId
......
package cn.freemud.service.impl;
import cn.freemud.entities.dto.ActivityCalculationDiscountResponseDto;
import cn.freemud.entities.dto.UserLoginInfoDto;
import cn.freemud.entities.dto.activity.ActivityQueryDto;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.vo.*;
import cn.freemud.enums.ActivityTypeEnum;
import cn.freemud.service.IPromotionService;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@Service("buyMSendNCouponDiscountService")
public class BuyMSendNCouponDiscountServiceImpl implements IPromotionService {
@Override
public void updateShoppingCartGoodsDiscount(CouponPromotionVO couponPromotionVO, ActivityQueryDto activityQueryDto,
ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult,
List<CartGoods> cartGoodsList, ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo,
UserLoginInfoDto userLoginInfoDto, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo) {
if (calculationDiscountResult == null || CollectionUtils.isEmpty(calculationDiscountResult.getCouponDiscounts())) {
return;
}
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.CouponResults> couponResultsList = calculationDiscountResult.getCouponDiscounts();
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.CouponResults> collect = couponResultsList.stream().filter(c -> ActivityTypeEnum.TYPE_330.getCode().equals(c.getActivityType())).collect(Collectors.toList());
if (CollectionUtils.isEmpty(collect)) {
return;
}
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods goods : calculationDiscountResult.getGoods()) {
if (CollectionUtils.isEmpty(goods.getDiscounts())) {
continue;
}
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount> goodsDiscounts = goods.getDiscounts().stream().filter(c -> ActivityTypeEnum.TYPE_330.getCode().equals(c.getType())).collect(Collectors.toList());
if (CollectionUtils.isEmpty(goodsDiscounts)) {
continue;
}
// List<CartGoods> addSendGoodsList = new ArrayList<>();
for (CartGoods cartGoods : cartGoodsList) {
if (Objects.equals(goods.getCartGoodsUid(), cartGoods.getCartGoodsUid())) {
Integer actualGoodsNumber = goodsDiscounts.get(0).getActualGoodsNumber();
if (cartGoods.getQty() > actualGoodsNumber) {
// CartGoods cartGood = new CartGoods();
// BeanUtils.copyProperties(cartGoods, cartGood);
// cartGood.setQty(actualGoodsNumber);
// cartGood.setAmount(0L);
// cartGoods.setQty(cartGoods.getQty() - actualGoodsNumber);
cartGoods.setAmount(goods.getRealAmount());
// addSendGoodsList.add(cartGood);
}
if (cartGoods.getQty() == actualGoodsNumber) {
cartGoods.setAmount(0L);
}
}
}
// cartGoodsList.addAll(addSendGoodsList);
}
}
@Override
public void updateShoppingCartGoodsApportion(ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo,
ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult,
ShoppingCartGoodsDto shoppingCartGoodsDto, CreateOrderVo.PremiumExchangeActivity premiumExchangeActivity,
ShoppingCartInfoRequestVo shoppingCartInfoRequestVo) {
}
}
...@@ -98,7 +98,8 @@ public class CouponPromotionService implements IPromotionService { ...@@ -98,7 +98,8 @@ public class CouponPromotionService implements IPromotionService {
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.CouponResults couponResults : couponResultsList) { for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.CouponResults couponResults : couponResultsList) {
//前端计算小计拿商品现价累计减couponDiscount,商品券换购券现价已排除 //前端计算小计拿商品现价累计减couponDiscount,商品券换购券现价已排除
if(ActivityTypeEnum.TYPE_33.getCode()== couponResults.getActivityType() if(ActivityTypeEnum.TYPE_33.getCode()== couponResults.getActivityType()
|| ActivityTypeEnum.TYPE_32.getCode()== couponResults.getActivityType()){ || ActivityTypeEnum.TYPE_32.getCode()== couponResults.getActivityType()
|| Objects.equals(ActivityTypeEnum.TYPE_330.getCode(), couponResults.getActivityType())){
continue; continue;
} }
couponDiscount = couponDiscount + (couponResults.getDiscountAmount() == null ? 0 : couponResults.getDiscountAmount()); couponDiscount = couponDiscount + (couponResults.getDiscountAmount() == null ? 0 : couponResults.getDiscountAmount());
...@@ -218,6 +219,11 @@ public class CouponPromotionService implements IPromotionService { ...@@ -218,6 +219,11 @@ public class CouponPromotionService implements IPromotionService {
for (ShoppingCartGoodsDto.CartGoodsDetailDto cartGoods : shoppingCartGoodsDto.getProducts()) { for (ShoppingCartGoodsDto.CartGoodsDetailDto cartGoods : shoppingCartGoodsDto.getProducts()) {
if (StringUtils.isNotEmpty(cartGoods.getCouponCode())) { if (StringUtils.isNotEmpty(cartGoods.getCouponCode())) {
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.CouponResults couponDiscount : couponDiscounts) { for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.CouponResults couponDiscount : couponDiscounts) {
if(Objects.equals(couponDiscount.getActivityType(),ActivityTypeEnum.TYPE_330.getCode())){
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods> collect = calculationDiscountResult.getGoods().stream().filter(goods -> Objects.equals(cartGoods.getCartGoodsUid(), goods.getCartGoodsUid())).collect(Collectors.toList());
//商品优惠赋值
getActivityDiscountDto2(collect,cartGoods);
}else {
ActivityDiscountsDto activityDiscountsDto = getActivityDiscountDto(calculationDiscountResult.getApportionGoods(), couponDiscount); ActivityDiscountsDto activityDiscountsDto = getActivityDiscountDto(calculationDiscountResult.getApportionGoods(), couponDiscount);
if (activityDiscountsDto != null) { if (activityDiscountsDto != null) {
ActivityDiscountsDto activityDiscountsDto1 = new ActivityDiscountsDto(); ActivityDiscountsDto activityDiscountsDto1 = new ActivityDiscountsDto();
...@@ -231,6 +237,7 @@ public class CouponPromotionService implements IPromotionService { ...@@ -231,6 +237,7 @@ public class CouponPromotionService implements IPromotionService {
} }
} }
} }
}
// fisherman 获取优惠券的信息 存放入 setActivityDiscountsDtos // fisherman 获取优惠券的信息 存放入 setActivityDiscountsDtos
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.CouponResults couponDiscount : couponDiscounts) { for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.CouponResults couponDiscount : couponDiscounts) {
if (ActivityTypeEnum.TYPE_34.getCode().compareTo(couponDiscount.getActivityType()) ==0) { if (ActivityTypeEnum.TYPE_34.getCode().compareTo(couponDiscount.getActivityType()) ==0) {
...@@ -269,6 +276,30 @@ public class CouponPromotionService implements IPromotionService { ...@@ -269,6 +276,30 @@ public class CouponPromotionService implements IPromotionService {
return null; return null;
} }
private ActivityDiscountsDto getActivityDiscountDto2(List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods> goods, ShoppingCartGoodsDto.CartGoodsDetailDto cartGoods) {
if(CollectionUtils.isNotEmpty(goods)){
ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods goods1 = goods.get(0);
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount> discounts = goods1.getDiscounts();
if(CollectionUtils.isNotEmpty(discounts) && Objects.equals(discounts.get(0).getType(),ActivityTypeEnum.TYPE_330.getCode())){
ActivityDiscountsDto activityDiscountsDto = new ActivityDiscountsDto();
activityDiscountsDto.setActivityCode(discounts.get(0).getActivityCode());
activityDiscountsDto.setActivityName(discounts.get(0).getActivityName());
activityDiscountsDto.setActivityType(this.convent2ActivityType(discounts.get(0).getType()));
activityDiscountsDto.setDiscountAmount(0 - discounts.get(0).getDiscount().intValue());
activityDiscountsDto.setActualActivityGoodsNumber(discounts.get(0).getActualGoodsNumber());
activityDiscountsDto.setCartGoodsUid(goods1.getCartGoodsUid());
//商品优惠赋值
cartGoods.setTotalDiscountAmount(-goods1.getDiscountAmount().intValue());
cartGoods.setSalePrice(goods1.getNowPrice());
cartGoods.setActivityDiscountsDtos(Arrays.asList(activityDiscountsDto));
return activityDiscountsDto;
}
}
return null;
}
public ActivityClassifyCouponBean createEmptyActivityCouponBean() { public ActivityClassifyCouponBean createEmptyActivityCouponBean() {
ActivityClassifyCouponBean activityClassifyCouponBean = new ActivityClassifyCouponBean(); ActivityClassifyCouponBean activityClassifyCouponBean = new ActivityClassifyCouponBean();
...@@ -285,6 +316,10 @@ public class CouponPromotionService implements IPromotionService { ...@@ -285,6 +316,10 @@ public class CouponPromotionService implements IPromotionService {
if (type != null && Hg.equals(type)) { if (type != null && Hg.equals(type)) {
type = 32; type = 32;
} }
Integer buyMsendN = 330;
if (type != null && buyMsendN.equals(type)) {
type = 32;
}
return type; return type;
} }
} }
...@@ -924,6 +924,16 @@ public class CouponServiceImpl implements CouponService { ...@@ -924,6 +924,16 @@ public class CouponServiceImpl implements CouponService {
break; break;
} }
} }
if(CouponTypeEnum.TYPE_7.getCode().equals(detail.getType())){
for (GetCouponDetailResponseDto.ActiveProduct activeProduct : detail.getActiveProduct()) {
if (goodsId.equals(activeProduct.getProductIdPartner())) {
productValid = true;
couponActivityDetail = detail;
couponType = CouponTypeEnum.TYPE_7.getCode();
break;
}
}
}
} }
//检查商品是否有效 //检查商品是否有效
if (!productValid) { if (!productValid) {
...@@ -1347,4 +1357,176 @@ public class CouponServiceImpl implements CouponService { ...@@ -1347,4 +1357,176 @@ public class CouponServiceImpl implements CouponService {
} }
} }
} }
// @Override
public CheckSpqInfoResponseDto checkSpqInfo(CheckSpqInfoRequestDto requestDto, String goodsId,Integer goodsType) {
String partnerId = requestDto.getPartnerId();
String couponCode = requestDto.getCouponCode();
String storeId = requestDto.getStoreId();
//TODO 查询券详情券是否存在
GetMemberCouponRequestVo requestVo = new GetMemberCouponRequestVo();
requestVo.setPartnerId(partnerId);
requestVo.setCouponCode(couponCode);
requestVo.setStoreId(requestDto.getStoreId());
GetCouponDetailResponseDto couponDetailResponseDto = couponService.getMemberCoupon(requestVo);
if (couponDetailResponseDto == null || !couponDetailResponseDto.getResult().equals(ResponseCodeConstant.RESPONSE_SUCCESS_1) || CollectionUtils.isEmpty(couponDetailResponseDto.getDetails())) {
return null;
}
GetCouponDetailResponseDto.Details details = couponDetailResponseDto.getDetails().get(0);
//校验商品券是否可用
if (!Objects.equals(details.getStatus(), CouponStatus.STATUS_0.getCode())
&& !Objects.equals(details.getStatus(), CouponStatus.STATUS_2.getCode())) {
return null;
}
List<String> couPonstoreIds = Lists.newArrayList();
//TODO 判断该券是否在这个门店下(一个券可以在多个门店下使用)
if (CollectionUtils.isNotEmpty(details.getActiveRestrictionVOS())) {
details.getActiveRestrictionVOS().forEach(activeRestrictionVOS -> {
couPonstoreIds.add(activeRestrictionVOS.getStoreIdPartner());
});
}
if (CollectionUtils.isNotEmpty(couPonstoreIds) && !couPonstoreIds.contains(storeId)) {
return null;
}
//券返回的商品id
List<String> skuIds = Lists.newArrayList();
String skuId = details.getActiveProduct().get(0).getProductIdPartner();
skuIds.add(String.valueOf(skuId));
//TODO 通过skuid查询spuid
Map<String, GetProductsVo> productsVoMap = itemService.getProducts(skuIds, partnerId, storeId , requestDto.getMenuType());
GetProductsVo productsVo = productsVoMap.get(skuId);
if (null == productsVo || !Objects.equals(productsVo.getStatus(), StoreItemStatus.PUT_ON_SALE.getCode())) {
return null;
}
// 校验券的可用时间
List<GetCouponDetailResponseDto.ActiveRedeemTimeInterval> activeRedeemTimeIntervalList = details.getActiveRedeemTimeIntervalList();
boolean verificationPassed = checkCouonRedeemTime(activeRedeemTimeIntervalList);
if (!verificationPassed){
return null;
}
// 校验商品可用时间
ValidateShopProductRequest request = getValidateShopProductRequest(productsVo, requestDto);
ProductResponseDTO<ValiadShopProductResponse> valiadProductResponse = storeItemClient.validateShopProduct(request);
if (null == valiadProductResponse || !Objects.equals(ResponseConstant.SUCCESS_RESPONSE_CODE, valiadProductResponse.getErrcode())
|| valiadProductResponse.getData() == null || CollectionUtils.isEmpty(valiadProductResponse.getData().getSuccessList())) {
return null;
}
// CheckSpqInfoResponseDto dto = new CheckSpqInfoResponseDto();
// dto.setCouponCode(couponCode);
// dto.setActiveCode(details.getActive().getActiveCode());
// dto.setCouponName(details.getTitle());
// dto.setActivityName(details.getActive().getActiveName());
// if (details.getActive().getMaxRedeemTimes() != null && details.getActive().getMaxRedeemTimes() > 1){
// if (details.getToday_available_times() != null){
// dto.setTodayAvailableTimes(details.getToday_available_times());
// } else {
// dto.setTodayAvailableTimes(1);
// }
// } else {
// dto.setTodayAvailableTimes(1);
// }
// dto.setPrice(productsVo.getFinalPrice());
// dto.setSpuId(productsVo.getSpuId());
// dto.setSpuName(productsVo.getSkuName());
// dto.setStockLimit(ObjectUtils.equals(1, productsVo.getStockLimit()));
// dto.setSkuId(productsVo.getSkuId());
// dto.setSkuName(StringUtils.isNotBlank(productsVo.getSkuName()) ? productsVo.getSkuName() : productsVo.getSpuName());
// dto.setPicture(productsVo.getSpuPicture());
// dto.setCouponType(0);
// return dto;
boolean productValid = false;
Integer couponType = 0;
for (GetCouponDetailResponseDto.Details detail : couponDetailResponseDto.getDetails()) {
if (productValid) break;
if (!CouponStatus.STATUS_0.getCode().equals(detail.getStatus()) && !CouponStatus.STATUS_2.getCode().equals(detail.getStatus())) continue;
for (GetCouponDetailResponseDto.ActiveProduct activeProduct : detail.getActiveProduct()) {
if (goodsId.equals(activeProduct.getProductIdPartner())) {
productValid = true;
couponType = CouponTypeEnum.TYPE_4.getCode();
break;
}
}
if(CouponTypeEnum.TYPE_7.getCode().equals(detail.getType())){
for (GetCouponDetailResponseDto.ActiveProduct activeProduct : detail.getActiveProduct()) {
if (goodsId.equals(activeProduct.getProductIdPartner())) {
productValid = true;
couponType = CouponTypeEnum.TYPE_7.getCode();
break;
}
}
}
}
//检查商品是否有效
if (!productValid) {
return null;
}
//判断该券是否在这个门店下(一个券可以在多个门店下使用)
List<String> couponStoreIds = Lists.newArrayList();
for (GetCouponDetailResponseDto.Details detail : couponDetailResponseDto.getDetails()) {
if (!CouponStatus.STATUS_0.getCode().equals(detail.getStatus()) && !CouponStatus.STATUS_2.getCode().equals(detail.getStatus())) continue;
for (GetCouponDetailResponseDto.ActiveRestrictionVOS activeRestrictionVO : detail.getActiveRestrictionVOS()) {
couponStoreIds.add(activeRestrictionVO.getStoreIdPartner());
}
}
if (CollectionUtils.isNotEmpty(couponStoreIds) && !couponStoreIds.contains(storeId)) {
return null;
}
//券返回的商品id
// List<String> skuIds = Lists.newArrayList();
// String skuId = goodsId;
// skuIds.add(skuId);
//通过skuid查询spuid
// Map<String, GetProductsVo> productsVoMap = itemService.getProducts(skuIds, partnerId, storeId, requestDto.getMenuType());
// GetProductsVo productsVo = productsVoMap.get(skuId);
// if (null == productsVo || !Objects.equals(productsVo.getStatus(), StoreItemStatus.PUT_ON_SALE.getCode())) {
// return null;
// }
// 校验券的可用时间
// List<GetCouponDetailResponseDto.ActiveRedeemTimeInterval> activeRedeemTimeIntervalList = couponDetailResponseDto.getDetails().get(0).getActiveRedeemTimeIntervalList();
// boolean verificationPassed = checkCouonRedeemTime(activeRedeemTimeIntervalList);
// if (!verificationPassed){
// return null;
// }
// 校验商品可用时间
// ValidateShopProductRequest request = getValidateShopProductRequest(productsVo, requestDto);
// ProductResponseDTO<ValiadShopProductResponse> valiadProductResponse = storeItemClient.validateShopProduct(request);
// if (null == valiadProductResponse || !Objects.equals(ResponseConstant.SUCCESS_RESPONSE_CODE, valiadProductResponse.getErrcode())
// || valiadProductResponse.getData() == null || CollectionUtils.isEmpty(valiadProductResponse.getData().getSuccessList())) {
// return null;
// }
CheckSpqInfoResponseDto dto = new CheckSpqInfoResponseDto();
if (details.getActive().getMaxRedeemTimes() != null && details.getActive().getMaxRedeemTimes() > 1){
if (details.getToday_available_times() != null){
dto.setTodayAvailableTimes(details.getToday_available_times());
} else {
dto.setTodayAvailableTimes(1);
}
} else {
dto.setTodayAvailableTimes(1);
}
dto.setCouponCode(couponCode);
dto.setActiveCode(details.getActive().getActiveCode());
dto.setCouponName(details.getTitle());
dto.setActivityName(details.getActive().getActiveName());
dto.setPrice(productsVo.getFinalPrice());
dto.setSpuId(productsVo.getSpuId());
dto.setSpuName(productsVo.getSkuName());
dto.setSkuId(productsVo.getSkuId());
dto.setSkuName(StringUtils.isNotBlank(productsVo.getSkuName()) ? productsVo.getSkuName() : productsVo.getSpuName());
dto.setPicture(productsVo.getSpuPicture());
dto.setDefaultSpecName(productsVo.getDefaultSpecName());
dto.setDefaultSpecId(productsVo.getDefaultSpecId());
dto.setStockLimit(ObjectUtils.equals(1, productsVo.getStockLimit()));
dto.setExtras(productsVo.getExtra());
dto.setCouponType(couponType);
return dto;
}
} }
...@@ -278,9 +278,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -278,9 +278,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
*/ */
@Override @Override
public BaseResponse addGoods(AddShoppingCartGoodsRequestVo addShoppingCartGoodsRequestVo) { public BaseResponse addGoods(AddShoppingCartGoodsRequestVo addShoppingCartGoodsRequestVo) {
if (StringUtils.isEmpty(addShoppingCartGoodsRequestVo.getShopId())){ if (StringUtils.isEmpty(addShoppingCartGoodsRequestVo.getShopId())) {
return ResponseUtil.error(ResponseResult.SHOPPING_CART_SHOP_ID_NOT_EMPTY); return ResponseUtil.error(ResponseResult.SHOPPING_CART_SHOP_ID_NOT_EMPTY);
// throw new ServiceException(ResponseResult.SHOPPING_CART_SHOP_ID_NOT_EMPTY);
} }
ShoppingCartConvertAdapter.convent2SkuId(addShoppingCartGoodsRequestVo); ShoppingCartConvertAdapter.convent2SkuId(addShoppingCartGoodsRequestVo);
ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo = new ShoppingCartGoodsResponseVo(); ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo = new ShoppingCartGoodsResponseVo();
...@@ -330,18 +329,15 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -330,18 +329,15 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
// 获取商品详细信息 // 获取商品详细信息
List<ProductBean> productBeanListSpuClass = assortmentSdkService.getProductsInfo(partnerId, storeId List<ProductBean> productBeanListSpuClass = assortmentSdkService.getProductsInfo(partnerId, storeId
, Collections.singletonList(spuId2), addShoppingCartGoodsRequestVo.getMenuType(), this.shoppingCartBaseService); , Collections.singletonList(spuId2), addShoppingCartGoodsRequestVo.getMenuType(), this.shoppingCartBaseService);
// LogUtil.info("productBeanListSpuClass", spuId2,JSON.toJSONString(productBeanListSpuClass));
// 没有查到商品 // 没有查到商品
if (productBeanListSpuClass == null || productBeanListSpuClass.isEmpty()) { if (productBeanListSpuClass == null || productBeanListSpuClass.isEmpty()) {
return ResponseUtil.error(ResponseResult.SHOPPING_CART_PRODUCT_NOT_EXIST); return ResponseUtil.error(ResponseResult.SHOPPING_CART_PRODUCT_NOT_EXIST);
// throw new ServiceException(ResponseResult.SHOPPING_CART_PRODUCT_NOT_EXIST);
} }
// 检查商品小料数量 // 检查商品小料数量
if (checkMaterialQty(addShoppingCartGoodsRequestVo, productBeanListSpuClass)) { if (checkMaterialQty(addShoppingCartGoodsRequestVo, productBeanListSpuClass)) {
return ResponseUtil.error(ResponseResult.SHOPPING_CART_MATERIA_QTY_LIMIT_ERR); return ResponseUtil.error(ResponseResult.SHOPPING_CART_MATERIA_QTY_LIMIT_ERR);
// throw new ServiceException(ResponseResult.SHOPPING_CART_MATERIA_QTY_LIMIT_ERR);
} }
//缓存中获取购物车商品信息 //缓存中获取购物车商品信息
...@@ -354,7 +350,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -354,7 +350,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
Integer checkQty = this.checkSkuQty(allCartGoodsList, cartGoods); Integer checkQty = this.checkSkuQty(allCartGoodsList, cartGoods);
//购物车添加数量限制 //购物车添加数量限制
Integer productsCount = limitGoodsQty(allCartGoodsList, cartGoods, appId,partnerId); Integer productsCount = limitGoodsQty(allCartGoodsList, cartGoods, appId, partnerId);
//查询多个商品库存信息 TODO //查询多个商品库存信息 TODO
queryManyGoodsStocks(addShoppingCartGoodsRequestVo, productIds, productBeanListSpuClass, skuId, checkQty); queryManyGoodsStocks(addShoppingCartGoodsRequestVo, productIds, productBeanListSpuClass, skuId, checkQty);
String productName = null; String productName = null;
...@@ -740,7 +736,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -740,7 +736,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
, shoppingCartInfoRequestVo.getFlag() , shoppingCartInfoRequestVo.getFlag()
, userId , userId
, storeId); , storeId);
buildShoppingCartGoodsResponse(shoppingCartGoodsResponseVo,calculationSharingDiscountResult,shoppingCartInfoRequestVo.getFlag(),partnerId); buildShoppingCartGoodsResponse(shoppingCartGoodsResponseVo, calculationSharingDiscountResult, shoppingCartInfoRequestVo.getFlag(), partnerId);
} else { } else {
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = new ArrayList<>(); List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = new ArrayList<>();
// 当couponCode不为空时,需参与价格计算 // 当couponCode不为空时,需参与价格计算
...@@ -1222,7 +1218,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -1222,7 +1218,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
// if (activityClassifyCouponBean != null && CollectionUtils.isNotEmpty(activityClassifyCouponBean.getUsableCoupons())) { // if (activityClassifyCouponBean != null && CollectionUtils.isNotEmpty(activityClassifyCouponBean.getUsableCoupons())) {
// List<GetMemberInfoResponseVo.Coupon> coupons = activityClassifyCouponBean.getUsableCoupons().stream().map(each -> convert2MemberCoupon(each)).collect(toList()); // List<GetMemberInfoResponseVo.Coupon> coupons = activityClassifyCouponBean.getUsableCoupons().stream().map(each -> convert2MemberCoupon(each)).collect(toList());
// , memberId, request.getStoreId(), new CouponPromotionVO(), false, request.getOrderType(), 0,"","", ""); // , memberId, request.getStoreId(), new CouponPromotionVO(), false, request.getOrderType(), 0,"","", "");
if (activityClassifyCouponBean != null && CollectionUtils.isNotEmpty(activityClassifyCouponBean.getUsableCoupons())){ if (activityClassifyCouponBean != null && CollectionUtils.isNotEmpty(activityClassifyCouponBean.getUsableCoupons())) {
List<GetMemberInfoResponseVo.Coupon> coupons = activityClassifyCouponBean.getUsableCoupons().stream().map(this::convert2MemberCoupon).collect(toList()); List<GetMemberInfoResponseVo.Coupon> coupons = activityClassifyCouponBean.getUsableCoupons().stream().map(this::convert2MemberCoupon).collect(toList());
responseData.setCoupons(coupons); responseData.setCoupons(coupons);
} }
...@@ -1302,17 +1298,17 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -1302,17 +1298,17 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
coupon.setCuoponType(each.getCouponType()); coupon.setCuoponType(each.getCouponType());
coupon.setCouponName(each.getCouponName()); coupon.setCouponName(each.getCouponName());
// 折扣券使用折扣字段 // 折扣券使用折扣字段
if(Objects.equals(each.getCouponType(),CouponTypeEnum.TYPE_3.getCode())){ if (Objects.equals(each.getCouponType(), CouponTypeEnum.TYPE_3.getCode())) {
int discountAmount = Integer.parseInt(Optional.ofNullable(each.getDiscountAmount()).orElse("0")); int discountAmount = Integer.parseInt(Optional.ofNullable(each.getDiscountAmount()).orElse("0"));
BigDecimal discount = BigDecimal.ZERO; BigDecimal discount = BigDecimal.ZERO;
// 转换千分比为小数 // 转换千分比为小数
if (discountAmount != 0){ if (discountAmount != 0) {
discount = new BigDecimal(discountAmount).divide(BigDecimal.valueOf(100),1,BigDecimal.ROUND_DOWN); discount = new BigDecimal(discountAmount).divide(BigDecimal.valueOf(100), 1, BigDecimal.ROUND_DOWN);
} }
coupon.setDiscount(discount); coupon.setDiscount(discount);
// 暂时先不上 // 暂时先不上
coupon.setDiscountAmount(0); coupon.setDiscountAmount(0);
}else { } else {
coupon.setDiscount(BigDecimal.ZERO); coupon.setDiscount(BigDecimal.ZERO);
coupon.setDiscountAmount(Integer.valueOf(each.getDiscountAmount())); coupon.setDiscountAmount(Integer.valueOf(each.getDiscountAmount()));
} }
...@@ -1413,23 +1409,31 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -1413,23 +1409,31 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
HashMap<String, List<String>> spqIdToCartUuid = new HashMap<>(16); HashMap<String, List<String>> spqIdToCartUuid = new HashMap<>(16);
for (int i = cartGoodsList.size() - 1; i >= 0; i--) { for (int i = cartGoodsList.size() - 1; i >= 0; i--) {
CartGoods cartGoods = cartGoodsList.get(i); CartGoods cartGoods = cartGoodsList.get(i);
String cartGoodsUid = cartGoods.getCartGoodsUid(); //套餐商品的固定和可选商品必有一个
// 商品不是商品券 if (GoodsTypeEnum.SET_MEAL_GOODS.getGoodsType().equals(cartGoods.getGoodsType())) {
if (StringUtils.isBlank(cartGoods.getCouponCode()) && !cartGoodsUid.startsWith(CommonsConstant.COUPON_PREFIX)) { if (CollectionUtils.isEmpty(cartGoods.getProductGroupList()) && CollectionUtils.isEmpty(cartGoods.getProductComboList())) {
this.addCalculationDiscountGoods(calculationDiscountGoodsList, cartGoods); cartGoodsList.remove(i);
assortmentSdkService.setShoppingCart(partnerId, storeId, userId, cartGoodsList, null, null, this.shoppingCartBaseService,bizType);
throw new ServiceException(ResponseResult.SHOPPING_CART_NO_MEAL);
} }
// 商品是商品券 }
else {
// 商品券ID换取商品 String cartGoodsUid = cartGoods.getCartGoodsUid();
String couponCode = ""; String couponCode = "";
if (cartGoodsUid.startsWith(CommonsConstant.COUPON_PREFIX)) { if (cartGoodsUid.startsWith(CommonsConstant.COUPON_PREFIX)) {
couponCode = cartGoods.getCartGoodsUid().substring(CommonsConstant.COUPON_PREFIX.length()); couponCode = cartGoods.getCartGoodsUid().substring(CommonsConstant.COUPON_PREFIX.length());
} else { } else {
couponCode = cartGoods.getCouponCode(); couponCode = cartGoods.getCouponCode();
} }
// 商品不是商品券
if (StringUtils.isBlank(couponCode)) {
this.addCalculationDiscountGoods(calculationDiscountGoodsList, cartGoods);
} else {
CheckSpqInfoRequestDto checkSpqInfoRequestDto = new CheckSpqInfoRequestDto(partnerId, storeId, couponCode, menuType); CheckSpqInfoRequestDto checkSpqInfoRequestDto = new CheckSpqInfoRequestDto(partnerId, storeId, couponCode, menuType);
CheckSpqInfoResponseDto checkSpqInfoResponseDto = null; CheckSpqInfoResponseDto checkSpqInfoResponseDto = null;
if (GoodsTypeEnum.HG_COUPON_GOODS.getGoodsType().equals(cartGoods.getGoodsType())) { if (GoodsTypeEnum.HG_COUPON_GOODS.getGoodsType().equals(cartGoods.getGoodsType())
|| GoodsTypeEnum.BUY_M_SEND_N_COUPON.getGoodsType().equals(cartGoods.getGoodsType())) {
checkSpqInfoResponseDto = couponService.checkSpqInfo(checkSpqInfoRequestDto, cartGoods.getSkuId()); checkSpqInfoResponseDto = couponService.checkSpqInfo(checkSpqInfoRequestDto, cartGoods.getSkuId());
} else { } else {
checkSpqInfoResponseDto = couponService.checkSpqInfo(checkSpqInfoRequestDto); checkSpqInfoResponseDto = couponService.checkSpqInfo(checkSpqInfoRequestDto);
...@@ -1438,11 +1442,13 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -1438,11 +1442,13 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
if (checkSpqInfoResponseDto == null) { if (checkSpqInfoResponseDto == null) {
cartGoodsList.remove(i); cartGoodsList.remove(i);
assortmentSdkService.setShoppingCart(partnerId, storeId, userId, cartGoodsList, null, null, this.shoppingCartBaseService,bizType); assortmentSdkService.setShoppingCart(partnerId, storeId, userId, cartGoodsList, null, null, this.shoppingCartBaseService,bizType);
} else { continue;
}
if (cartGoodsUid.startsWith(CommonsConstant.COUPON_PREFIX)) { if (cartGoodsUid.startsWith(CommonsConstant.COUPON_PREFIX)) {
validCouponMap.put(couponCode, checkSpqInfoResponseDto); validCouponMap.put(couponCode, checkSpqInfoResponseDto);
} else { }if (!GoodsTypeEnum.BUY_M_SEND_N_COUPON.getGoodsType().equals(cartGoods.getGoodsType())) {
validCouponMap.put(couponCode + checkSpqInfoResponseDto.getSkuId(), checkSpqInfoResponseDto); validCouponMap.put(couponCode + checkSpqInfoResponseDto.getSkuId(), checkSpqInfoResponseDto);
validCouponMap.put(couponCode, checkSpqInfoResponseDto);
} }
if (spqIdToCartUuid.containsKey(couponCode)) { if (spqIdToCartUuid.containsKey(couponCode)) {
List<String> uuidList = spqIdToCartUuid.get(couponCode); List<String> uuidList = spqIdToCartUuid.get(couponCode);
...@@ -1453,38 +1459,34 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -1453,38 +1459,34 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
uuidList.add(cartGoods.getCartGoodsUid()); uuidList.add(cartGoods.getCartGoodsUid());
spqIdToCartUuid.put(couponCode, uuidList); spqIdToCartUuid.put(couponCode, uuidList);
} }
validCouponMap.put(couponCode, checkSpqInfoResponseDto);
cartGoods.setName(checkSpqInfoResponseDto.getCouponName()); cartGoods.setName(checkSpqInfoResponseDto.getCouponName());
cartGoods.setSpuName(checkSpqInfoResponseDto.getCouponName()); cartGoods.setSpuName(checkSpqInfoResponseDto.getCouponName());
cartGoods.setStockLimit(checkSpqInfoResponseDto.isStockLimit()); cartGoods.setStockLimit(checkSpqInfoResponseDto.isStockLimit());
// 添加请求的优惠券信息 if (GoodsTypeEnum.BUY_M_SEND_N_COUPON.getGoodsType().equals(cartGoods.getGoodsType())) {
cartGoods.setName(checkSpqInfoResponseDto.getSkuName());
cartGoods.setSpuName(checkSpqInfoResponseDto.getSpuName());
}
//添加请求的优惠券信息 买M赠N券,不重复加促销券集合字段
String finalCouponCode = couponCode;
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> collect = coupons.stream().filter(calculationDiscountCoupon -> Objects.equals(calculationDiscountCoupon.getCode(), finalCouponCode)).collect(toList());
if(CollectionUtils.isEmpty(collect)){
ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon coupon = new ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon(); ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon coupon = new ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon();
coupon.setCode(checkSpqInfoResponseDto.getCouponCode()); coupon.setCode(checkSpqInfoResponseDto.getCouponCode());
coupon.setActivityCode(checkSpqInfoResponseDto.getActiveCode()); coupon.setActivityCode(checkSpqInfoResponseDto.getActiveCode());
coupons.add(coupon); coupons.add(coupon);
}
// 添加商品券代表的商品 // 添加商品券代表的商品
// 换购券传给促销要带code // 换购券传给促销要带code
String goodsId = StringUtils.isEmpty(checkSpqInfoResponseDto.getSkuId()) ? checkSpqInfoResponseDto.getSpuId() : checkSpqInfoResponseDto.getSkuId(); String goodsId = StringUtils.isEmpty(checkSpqInfoResponseDto.getSkuId()) ? checkSpqInfoResponseDto.getSpuId() : checkSpqInfoResponseDto.getSkuId();
if (GoodsTypeEnum.HG_COUPON_GOODS.getGoodsType().equals(cartGoods.getGoodsType())) { this.addCalculationDiscountGoods(calculationDiscountGoodsList, goodsId, cartGoods.getQty(), checkSpqInfoResponseDto.getPrice(), 100, cartGoodsUid, couponCode);
this.addCalculationDiscountGoods(calculationDiscountGoodsList, goodsId, cartGoods.getQty(), checkSpqInfoResponseDto.getPrice(), 100, cartGoodsUid, cartGoods.getSpuId());
} else {
this.addCalculationDiscountGoods(calculationDiscountGoodsList, goodsId, cartGoods.getQty(), checkSpqInfoResponseDto.getPrice(), 100, cartGoodsUid);
}
}
} }
if (GoodsTypeEnum.SET_MEAL_GOODS.getGoodsType().equals(cartGoods.getGoodsType())) {
if (CollectionUtils.isEmpty(cartGoods.getProductGroupList()) && CollectionUtils.isEmpty(cartGoods.getProductComboList())) {
cartGoodsList.remove(i);
assortmentSdkService.setShoppingCart(partnerId, storeId, userId, cartGoodsList, null, null, this.shoppingCartBaseService,bizType);
throw new ServiceException(ResponseResult.SHOPPING_CART_NO_MEAL);
}
}
} }
// 当加价购商品不为空时 // 当加价购商品不为空时
if (CollectionUtils.isNotEmpty(sendGoodsList)) { if (CollectionUtils.isNotEmpty(sendGoodsList)) {
for (ShoppingCartInfoRequestVo.SendGoods sendGoods : sendGoodsList) { for (ShoppingCartInfoRequestVo.SendGoods sendGoods : sendGoodsList) {
this.addCalculationDiscountGoods(calculationDiscountGoodsList, sendGoods.getGoodsId(), sendGoods.getQty(), sendGoods.getOriginalPrice(), 100, ""); this.addCalculationDiscountGoods(calculationDiscountGoodsList, sendGoods.getGoodsId(), sendGoods.getQty(), sendGoods.getOriginalPrice(), 100, "",null);
} }
} }
calculationDiscountGoodsList.removeIf(calculationDiscountGoods -> (calculationDiscountGoods.getGoodsQuantity().equals(0))); calculationDiscountGoodsList.removeIf(calculationDiscountGoods -> (calculationDiscountGoods.getGoodsQuantity().equals(0)));
...@@ -1533,8 +1535,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -1533,8 +1535,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
throw new ServiceException(ResponseResult.SHOPPING_CART_COUPON_CAN_NOT_USE_THIS_SHOP); throw new ServiceException(ResponseResult.SHOPPING_CART_COUPON_CAN_NOT_USE_THIS_SHOP);
} }
// 新增算价失败提示 // 新增算价失败提示
if (activityCalculationDiscountResponseDto != null && StringUtils.equals(activityCalculationDiscountResponseDto.getStatusCode(), "104")){ if (activityCalculationDiscountResponseDto != null && StringUtils.equals(activityCalculationDiscountResponseDto.getStatusCode(), "104")) {
throw new ServiceException(ResponseResult.SHOPPING_CART_COUPON_CAN_NOT_USE_THIS_SHOP,activityCalculationDiscountResponseDto.getMsg()); throw new ServiceException(ResponseResult.SHOPPING_CART_COUPON_CAN_NOT_USE_THIS_SHOP, activityCalculationDiscountResponseDto.getMsg());
} }
throw new ServiceException(ResponseResult.OPERATE_TOO_OFTEN); throw new ServiceException(ResponseResult.OPERATE_TOO_OFTEN);
} }
...@@ -1564,16 +1566,16 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -1564,16 +1566,16 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
* @param goodsQuantity * @param goodsQuantity
* @param originalPrice * @param originalPrice
*/ */
private void addCalculationDiscountGoods(List<ActivityCalculationDiscountRequestDto.CalculationDiscountGoods> calculationDiscountGoodsList, // private void addCalculationDiscountGoods(List<ActivityCalculationDiscountRequestDto.CalculationDiscountGoods> calculationDiscountGoodsList,
String goodsId, Integer goodsQuantity, Long originalPrice, Integer memberDiscount, String cartGoodsUid) { // String goodsId, Integer goodsQuantity, Long originalPrice, Integer memberDiscount, String cartGoodsUid) {
ActivityCalculationDiscountRequestDto.CalculationDiscountGoods calculationDiscountGoods = new ActivityCalculationDiscountRequestDto.CalculationDiscountGoods(); // ActivityCalculationDiscountRequestDto.CalculationDiscountGoods calculationDiscountGoods = new ActivityCalculationDiscountRequestDto.CalculationDiscountGoods();
calculationDiscountGoods.setGoodsId(goodsId); // calculationDiscountGoods.setGoodsId(goodsId);
calculationDiscountGoods.setCartGoodsUid(cartGoodsUid); // calculationDiscountGoods.setCartGoodsUid(cartGoodsUid);
calculationDiscountGoods.setGoodsQuantity(goodsQuantity); // calculationDiscountGoods.setGoodsQuantity(goodsQuantity);
calculationDiscountGoods.setOriginalPrice(originalPrice); // calculationDiscountGoods.setOriginalPrice(originalPrice);
calculationDiscountGoods.setMemberDiscount(memberDiscount); // calculationDiscountGoods.setMemberDiscount(memberDiscount);
this.addCalculationDiscountGoods(calculationDiscountGoodsList, calculationDiscountGoods); // this.addCalculationDiscountGoods(calculationDiscountGoodsList, calculationDiscountGoods);
} // }
private void addCalculationDiscountGoods(List<ActivityCalculationDiscountRequestDto.CalculationDiscountGoods> calculationDiscountGoodsList private void addCalculationDiscountGoods(List<ActivityCalculationDiscountRequestDto.CalculationDiscountGoods> calculationDiscountGoodsList
, String goodsId , String goodsId
...@@ -1799,9 +1801,13 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -1799,9 +1801,13 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
memberDiscountService.updateShoppingCartGoodsDiscount(couponPromotionVO, activityQueryDto, calculationDiscountResult, cartGoodsList, shoppingCartGoodsResponseVo, userLoginInfoDto, shoppingCartInfoRequestVo); memberDiscountService.updateShoppingCartGoodsDiscount(couponPromotionVO, activityQueryDto, calculationDiscountResult, cartGoodsList, shoppingCartGoodsResponseVo, userLoginInfoDto, shoppingCartInfoRequestVo);
//促销会员价 //促销会员价
MemberDiscountServiceImpl memberDiscountServiceNew=(MemberDiscountServiceImpl) PromotionFactory.getPromotionService(ShoppingCartPromotionEnum.MEMBER_DISCOUNT_NEw); MemberDiscountServiceImpl memberDiscountServiceNew = (MemberDiscountServiceImpl) PromotionFactory.getPromotionService(ShoppingCartPromotionEnum.MEMBER_DISCOUNT_NEw);
memberDiscountServiceNew.updateShoppingCartGoodsDiscountNew(couponPromotionVO, activityQueryDto, calculationDiscountResult, cartGoodsList, shoppingCartGoodsResponseVo, userLoginInfoDto, shoppingCartInfoRequestVo); memberDiscountServiceNew.updateShoppingCartGoodsDiscountNew(couponPromotionVO, activityQueryDto, calculationDiscountResult, cartGoodsList, shoppingCartGoodsResponseVo, userLoginInfoDto, shoppingCartInfoRequestVo);
BuyMSendNCouponDiscountServiceImpl buyMSendNCouponDiscountService = (BuyMSendNCouponDiscountServiceImpl) PromotionFactory.getPromotionService(ShoppingCartPromotionEnum.BUY_M_SEND_N_COUPON);
buyMSendNCouponDiscountService.updateShoppingCartGoodsDiscount(couponPromotionVO, activityQueryDto, calculationDiscountResult, cartGoodsList, shoppingCartGoodsResponseVo, userLoginInfoDto, shoppingCartInfoRequestVo);
/** /**
* 满额减配送费 优选活动 再配送券 * 满额减配送费 优选活动 再配送券
*/ */
...@@ -1992,7 +1998,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -1992,7 +1998,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
//当商品全部添加完毕,校验购物车商品(是否合法,上下架,点餐方式,是否在当前菜单中...),并移除非法商品 //当商品全部添加完毕,校验购物车商品(是否合法,上下架,点餐方式,是否在当前菜单中...),并移除非法商品
CheckCartRequest checkCartRequest = assortmentSdkService.checkShoppingCartSdk(oldAllCartGoodsList, addShoppingCartGoodsRequestVo.getPartnerId(), CheckCartRequest checkCartRequest = assortmentSdkService.checkShoppingCartSdk(oldAllCartGoodsList, addShoppingCartGoodsRequestVo.getPartnerId(),
addShoppingCartGoodsRequestVo.getShopId(), shoppingCartGoodsResponseVo, addShoppingCartGoodsRequestVo.getOrderType(), addShoppingCartGoodsRequestVo.getShopId(), shoppingCartGoodsResponseVo, addShoppingCartGoodsRequestVo.getOrderType(),
"", addShoppingCartGoodsRequestVo.getMenuType(),shoppingCartBaseService); "", addShoppingCartGoodsRequestVo.getMenuType(), shoppingCartBaseService);
if (checkCartRequest.getShoppingCartGoodsResponseVo() != null) { if (checkCartRequest.getShoppingCartGoodsResponseVo() != null) {
shoppingCartGoodsResponseVo.setToastMsg(checkCartRequest.getShoppingCartGoodsResponseVo().getToastMsg()); shoppingCartGoodsResponseVo.setToastMsg(checkCartRequest.getShoppingCartGoodsResponseVo().getToastMsg());
...@@ -2033,9 +2039,24 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -2033,9 +2039,24 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
private void addProductGoods(AddShoppingCartGoodsRequestVo addShoppingCartGoodsRequestVo private void addProductGoods(AddShoppingCartGoodsRequestVo addShoppingCartGoodsRequestVo
, CartGoods cartGoods, String spuId2, String userId, ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo, String spuId , CartGoods cartGoods, String spuId2, String userId, ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo, String spuId
, List<CartGoods> allCartGoodsList, List<ProductBean> productBeanListSpuClass, CouponProductDto couponProductDto, String couponCode, Integer todayAvailableTimes) { , List<CartGoods> allCartGoodsList, List<ProductBean> productBeanListSpuClass, CouponProductDto couponProductDto, String couponCode, Integer todayAvailableTimes) {
cartGoods.setSkuId(spuId2);
cartGoods.setOriginalPrice(0L);
cartGoods.setOriginalAmount(0L);
cartGoods.setAmount(0L);
cartGoods.setPackPrice(productBeanListSpuClass.get(0).getPackPrice().longValue());
cartGoods.setPic(productBeanListSpuClass.get(0).getPicture());
cartGoods.setWeight(productBeanListSpuClass.get(0).getWeight());
cartGoods.setUnit(productBeanListSpuClass.get(0).getUnit());
// 设置商品类型为商品券 // 设置商品类型为商品券
if (CouponTypeEnum.TYPE_4.getCode().equals(couponProductDto.getType())) { if (CouponTypeEnum.TYPE_4.getCode().equals(couponProductDto.getType())) {
cartGoods.setGoodsType(GoodsTypeEnum.HG_COUPON_GOODS.getGoodsType()); cartGoods.setGoodsType(GoodsTypeEnum.HG_COUPON_GOODS.getGoodsType());
} else if (CouponTypeEnum.TYPE_7.getCode().equals(couponProductDto.getType())) {
cartGoods.setGoodsType(GoodsTypeEnum.BUY_M_SEND_N_COUPON.getGoodsType());
cartGoods.setOriginalPrice(productBeanListSpuClass.get(0).getOriginalPrice());
cartGoods.setAmount(productBeanListSpuClass.get(0).getFinalPrice());
cartGoods.setSkuName(productBeanListSpuClass.get(0).getName());
} else { } else {
cartGoods.setGoodsType(GoodsTypeEnum.COUPON_GOODS.getGoodsType()); cartGoods.setGoodsType(GoodsTypeEnum.COUPON_GOODS.getGoodsType());
} }
...@@ -2046,21 +2067,25 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -2046,21 +2067,25 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
} }
// 商品券Id // 商品券Id
String spqId = spuId.substring(CommonsConstant.COUPON_PREFIX.length()); String spqId = spuId.substring(CommonsConstant.COUPON_PREFIX.length());
cartGoods.setSpuId(spqId);
if (CollectionUtils.isNotEmpty(allCartGoodsList)) { if (CollectionUtils.isNotEmpty(allCartGoodsList)) {
if (Objects.equals(CouponTypeEnum.TYPE_0.getCode(), couponProductDto.getType())
|| Objects.equals(CouponTypeEnum.TYPE_4.getCode(), couponProductDto.getType())) {
int sum = allCartGoodsList.stream().filter(p -> p.getSpuId().equals(spqId)).mapToInt(CartGoods::getQty).sum(); int sum = allCartGoodsList.stream().filter(p -> p.getSpuId().equals(spqId)).mapToInt(CartGoods::getQty).sum();
//今日可用次数判断
if (sum + cartGoods.getQty() > todayAvailableTimes) { if (sum + cartGoods.getQty() > todayAvailableTimes) {
throw new ServiceException(ResponseResult.SHOPPING_CART_GOODS_COUPON_CAN_NOT_USE); throw new ServiceException(ResponseResult.SHOPPING_CART_GOODS_COUPON_CAN_NOT_USE);
} }
} }
cartGoods.setSpuId(spqId); // if(Objects.equals(GoodsTypeEnum.BUY_M_SEND_N_COUPON.getGoodsType(),couponProductDto.getType()) ){
cartGoods.setSkuId(spuId2); // int sum = allCartGoodsList.stream().filter(p -> p.getSpuId().equals(spqId)).mapToInt(CartGoods::getQty).sum();
cartGoods.setOriginalPrice(0L); // if (sum + cartGoods.getQty() > todayAvailableTimes) {
cartGoods.setOriginalAmount(0L); // throw new ServiceException(ResponseResult.SHOPPING_CART_GOODS_COUPON_CAN_NOT_USE);
cartGoods.setAmount(0L); // }
cartGoods.setPackPrice(productBeanListSpuClass.get(0).getPackPrice().longValue()); // }
cartGoods.setPic(productBeanListSpuClass.get(0).getPicture());
cartGoods.setWeight(productBeanListSpuClass.get(0).getWeight()); }
cartGoods.setUnit(productBeanListSpuClass.get(0).getUnit());
boolean stockLimit = false; boolean stockLimit = false;
if (productBeanListSpuClass.get(0).getType() == ProductType.NOSPEC.getCode() if (productBeanListSpuClass.get(0).getType() == ProductType.NOSPEC.getCode()
&& productBeanListSpuClass.get(0).getStockLimit() == 1) { && productBeanListSpuClass.get(0).getStockLimit() == 1) {
...@@ -2178,7 +2203,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -2178,7 +2203,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
//fisherman 【ID1033456】自提根据模板配置计算餐具包装费 //fisherman 【ID1033456】自提根据模板配置计算餐具包装费
Long packAmount = commonFunctionHandle.getPackAmountByStoreConfig(shoppingCartInfoRequestVo, shoppingCartGoodsResponseVo.getNewPackAmount()); Long packAmount = commonFunctionHandle.getPackAmountByStoreConfig(shoppingCartInfoRequestVo, shoppingCartGoodsResponseVo.getNewPackAmount());
shoppingCartGoodsResponseVo.setNewPackAmount(packAmount); shoppingCartGoodsResponseVo.setNewPackAmount(packAmount);
if (Objects.equals(shoppingCartInfoRequestVo.getFlag(), SubmitPageEnum.YES.getCode())){ if (Objects.equals(shoppingCartInfoRequestVo.getFlag(), SubmitPageEnum.YES.getCode())) {
Long originalTotalAmount = shoppingCartGoodsResponseVo.getOriginalTotalAmount() + packAmount; Long originalTotalAmount = shoppingCartGoodsResponseVo.getOriginalTotalAmount() + packAmount;
Long totalAmount = shoppingCartGoodsResponseVo.getTotalAmount() + packAmount; Long totalAmount = shoppingCartGoodsResponseVo.getTotalAmount() + packAmount;
shoppingCartGoodsResponseVo.setOriginalTotalAmount(originalTotalAmount); shoppingCartGoodsResponseVo.setOriginalTotalAmount(originalTotalAmount);
...@@ -2188,7 +2213,6 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -2188,7 +2213,6 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
} }
/** /**
* 在原价、现价、折扣价上增加第一次使用会员卡的费用 * 在原价、现价、折扣价上增加第一次使用会员卡的费用
* *
...@@ -2510,7 +2534,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -2510,7 +2534,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
AssortmentCustomerInfoVo customerInfoVo = customerInfoManager.getCustomerInfoByObject(sessionId); AssortmentCustomerInfoVo customerInfoVo = customerInfoManager.getCustomerInfoByObject(sessionId);
if (customerInfoVo == null) throw new ServiceException(ResponseResult.NOT_LOGIN); if (customerInfoVo == null) throw new ServiceException(ResponseResult.NOT_LOGIN);
String jsonObject = JSON.toJSONString(customerInfoVo); String jsonObject = JSON.toJSONString(customerInfoVo);
CustomerInfoVo customerInfoVo1 = JSON.parseObject(jsonObject,CustomerInfoVo.class); CustomerInfoVo customerInfoVo1 = JSON.parseObject(jsonObject, CustomerInfoVo.class);
return customerInfoVo1; return customerInfoVo1;
} }
...@@ -2632,7 +2656,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -2632,7 +2656,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
if (Objects.nonNull(cartGoods)) { if (Objects.nonNull(cartGoods)) {
qty += cartGoods.getQty(); qty += cartGoods.getQty();
} }
int limitCount = queryLimitCount(partnerId,appid); int limitCount = queryLimitCount(partnerId, appid);
if (limitCount != 0 && qty > limitCount) { if (limitCount != 0 && qty > limitCount) {
throw new ServiceException(ResponseResult.SHOPPING_CART_LIMIT_ADD); throw new ServiceException(ResponseResult.SHOPPING_CART_LIMIT_ADD);
} }
...@@ -2642,7 +2666,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -2642,7 +2666,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
/** /**
* 查询购物车限购数量 * 查询购物车限购数量
*/ */
public int queryLimitCount(String partnerId,String appid) { public int queryLimitCount(String partnerId, String appid) {
int limitCount = 0; int limitCount = 0;
String redisKey = RedisUtil.limitCart + partnerId + "_" + appid; String redisKey = RedisUtil.limitCart + partnerId + "_" + appid;
//购物车内部缓存 //购物车内部缓存
...@@ -2702,7 +2726,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -2702,7 +2726,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
sendQty += sendGoods.getSendNumber(); sendQty += sendGoods.getSendNumber();
} }
} }
int cartLimitCount = queryLimitCount(partnerId,appid); int cartLimitCount = queryLimitCount(partnerId, appid);
if (cartLimitCount != 0 && checkQty + sendQty > cartLimitCount) { if (cartLimitCount != 0 && checkQty + sendQty > cartLimitCount) {
assortmentSdkService.setShoppingCart(partnerId, storeId, userId, oldCartGoodsList, null, tableNumber, shoppingCartService,bizType); assortmentSdkService.setShoppingCart(partnerId, storeId, userId, oldCartGoodsList, null, tableNumber, shoppingCartService,bizType);
throw new ServiceException(ResponseResult.SHOPPING_CART_LIMIT_ADD); throw new ServiceException(ResponseResult.SHOPPING_CART_LIMIT_ADD);
...@@ -2720,7 +2744,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -2720,7 +2744,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
} }
} }
int cartLimitCount = queryLimitCount(partnerId,appid); int cartLimitCount = queryLimitCount(partnerId, appid);
int sendQty = 0; int sendQty = 0;
if (CollectionUtils.isNotEmpty(sendActivitys)) { if (CollectionUtils.isNotEmpty(sendActivitys)) {
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity sendActivity : sendActivitys) { for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity sendActivity : sendActivitys) {
...@@ -2795,7 +2819,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -2795,7 +2819,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
private List<CalculationSharingDiscountRequestDto.CalculationDiscountCoupon> buildCoupons(List<CalculationSharingDiscountRequestDto.CalculationDiscountCoupon> oldCoupons, private List<CalculationSharingDiscountRequestDto.CalculationDiscountCoupon> buildCoupons(List<CalculationSharingDiscountRequestDto.CalculationDiscountCoupon> oldCoupons,
List<ChooseCouponVo> coupons) { List<ChooseCouponVo> coupons) {
for(int i = 0 ; i < oldCoupons.size() ; i++){ for (int i = 0; i < oldCoupons.size(); i++) {
CalculationSharingDiscountRequestDto.CalculationDiscountCoupon oldCoupon = oldCoupons.get(i); CalculationSharingDiscountRequestDto.CalculationDiscountCoupon oldCoupon = oldCoupons.get(i);
oldCoupon.setUseIndex(i); oldCoupon.setUseIndex(i);
} }
...@@ -2831,7 +2855,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -2831,7 +2855,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
try { try {
getMemberCouponListResponseDto = customerExtendClient.getMemberCouponListRequestDto(getMemberCouponListRequestDto); getMemberCouponListResponseDto = customerExtendClient.getMemberCouponListRequestDto(getMemberCouponListRequestDto);
} catch (Exception ex) { } catch (Exception ex) {
ErrorLog.errorConvertJson(this.getClass(),"会员服务优惠券接口调用失败",ex); ErrorLog.errorConvertJson(this.getClass(), "会员服务优惠券接口调用失败", ex);
} }
if (getMemberCouponListResponseDto != null && Objects.equals(getMemberCouponListResponseDto.getCode(), ResponseResult.SUCCESS.getCode())) { if (getMemberCouponListResponseDto != null && Objects.equals(getMemberCouponListResponseDto.getCode(), ResponseResult.SUCCESS.getCode())) {
return getMemberCouponListResponseDto.getData(); return getMemberCouponListResponseDto.getData();
...@@ -3256,12 +3280,12 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -3256,12 +3280,12 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
requestDto.setStoreId(replaceGoodsRequestVo.getShopId()); requestDto.setStoreId(replaceGoodsRequestVo.getShopId());
requestDto.setProductIds(goodsId); requestDto.setProductIds(goodsId);
GetProductStockResponseDto availableStocks = stockClient.getAvailableStocks(requestDto); GetProductStockResponseDto availableStocks = stockClient.getAvailableStocks(requestDto);
if (availableStocks != null ) { if (availableStocks != null) {
if (!ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(availableStocks.getCode())){ if (!ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(availableStocks.getCode())) {
// 没有请求数据 // 没有请求数据
fullReplace = false; fullReplace = false;
} }
if (CollectionUtils.isEmpty(availableStocks.getResult())){ if (CollectionUtils.isEmpty(availableStocks.getResult())) {
fullReplace = false; fullReplace = false;
} }
...@@ -3281,7 +3305,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -3281,7 +3305,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
// 获取到最新的 库存 stockLimitGoods 数据 放入 nowCartGoodsList 中 // 获取到最新的 库存 stockLimitGoods 数据 放入 nowCartGoodsList 中
notCheckStock.addAll(stockLimitGoods); notCheckStock.addAll(stockLimitGoods);
}else { } else {
fullReplace = false; fullReplace = false;
} }
} }
......
...@@ -446,9 +446,7 @@ public class CalculationCommonService { ...@@ -446,9 +446,7 @@ public class CalculationCommonService {
activityDiscountsDto.setActivityName(this.convertName(discount.getType(), discount.getActivityName())); activityDiscountsDto.setActivityName(this.convertName(discount.getType(), discount.getActivityName()));
activityDiscountsDto.setActivityType(this.convertType(discount.getType())); activityDiscountsDto.setActivityType(this.convertType(discount.getType()));
activityDiscountsDto.setDiscountAmount(discount.getDiscount().intValue()); activityDiscountsDto.setDiscountAmount(discount.getDiscount().intValue());
if(cocoPartnerId.contains(partnerId)){
activityDiscountsDto.setActualActivityGoodsNumber(discount.getActualGoodsNumber()); activityDiscountsDto.setActualActivityGoodsNumber(discount.getActualGoodsNumber());
}
activityDiscountsDtoList.add(activityDiscountsDto); activityDiscountsDtoList.add(activityDiscountsDto);
} }
} }
...@@ -722,6 +720,9 @@ public class CalculationCommonService { ...@@ -722,6 +720,9 @@ public class CalculationCommonService {
case 33: case 33:
newType = 32; newType = 32;
break; break;
case 330:
newType = 32;
break;
} }
return newType; return newType;
} }
......
...@@ -96,34 +96,47 @@ public class CalculationSharingDiscountService { ...@@ -96,34 +96,47 @@ public class CalculationSharingDiscountService {
HashMap<String, List<String>> spqIdToCartUuid = new HashMap<>(16); HashMap<String, List<String>> spqIdToCartUuid = new HashMap<>(16);
for (int i = cartSize; i >= 0; i--) { for (int i = cartSize; i >= 0; i--) {
CartGoods cartGoods = cartGoodsList.get(i); CartGoods cartGoods = cartGoodsList.get(i);
if (StringUtils.isBlank(cartGoods.getCouponCode()) && !cartGoods.getCartGoodsUid().startsWith(CommonsConstant.COUPON_PREFIX)) {//非商品券
this.setCommonDiscountGoods(calculationDiscountGoodsList,cartGoods); //套餐商品的固定和可选商品必有一个
if (GoodsTypeEnum.SET_MEAL_GOODS.getGoodsType().equals(cartGoods.getGoodsType())) {
if (CollectionUtils.isEmpty(cartGoods.getProductGroupList()) && CollectionUtils.isEmpty(cartGoods.getProductComboList())) {
cartGoodsList.remove(i);
assortmentSdkService.setShoppingCart(partnerId, storeId, userId, cartGoodsList, null, null, this.shoppingCartBaseService,bizType);
throw new ServiceException(ResponseResult.SHOPPING_CART_NO_MEAL);
}
} }
else {//商品券->商品券ID换取商品
String couponCode = cartGoods.getCouponCode(); String couponCode = cartGoods.getCouponCode();
boolean useCoupon = true; // 优惠券放在coupon字段而不是uuid中 if (cartGoods.getCartGoodsUid().startsWith(CommonsConstant.COUPON_PREFIX)) {
if (cartGoods.getCartGoodsUid().startsWith(CommonsConstant.COUPON_PREFIX)){
couponCode = cartGoods.getCartGoodsUid().substring(CommonsConstant.COUPON_PREFIX.length()); couponCode = cartGoods.getCartGoodsUid().substring(CommonsConstant.COUPON_PREFIX.length());
useCoupon = false;
} }
if (StringUtils.isBlank(couponCode)) {//非商品券
this.setCommonDiscountGoods(calculationDiscountGoodsList, cartGoods);
continue;
}else {
//商品券->商品券ID换取商品
CheckSpqInfoRequestDto checkSpqInfoRequestDto = new CheckSpqInfoRequestDto(partnerId, storeId, couponCode, menuType); CheckSpqInfoRequestDto checkSpqInfoRequestDto = new CheckSpqInfoRequestDto(partnerId, storeId, couponCode, menuType);
CheckSpqInfoResponseDto checkSpqInfo = null; CheckSpqInfoResponseDto checkSpqInfo = null;
if (GoodsTypeEnum.HG_COUPON_GOODS.getGoodsType().equals(cartGoods.getGoodsType())) { if (GoodsTypeEnum.HG_COUPON_GOODS.getGoodsType().equals(cartGoods.getGoodsType())
|| GoodsTypeEnum.BUY_M_SEND_N_COUPON.getGoodsType().equals(cartGoods.getGoodsType())) {
checkSpqInfo = couponService.checkSpqInfo(checkSpqInfoRequestDto, cartGoods.getSkuId()); checkSpqInfo = couponService.checkSpqInfo(checkSpqInfoRequestDto, cartGoods.getSkuId());
} else { } else {
checkSpqInfo = couponService.checkSpqInfo(checkSpqInfoRequestDto); checkSpqInfo = couponService.checkSpqInfo(checkSpqInfoRequestDto);
} }
if (null == checkSpqInfo) { if (null == checkSpqInfo) {
cartGoodsList.remove(i); cartGoodsList.remove(i);
assortmentSdkService.setShoppingCart(partnerId, storeId, userId, cartGoodsList, null, null, this.shoppingCartBaseService,bizType); assortmentSdkService.setShoppingCart(partnerId, storeId, userId, cartGoodsList, null, null, this.shoppingCartBaseService, bizType);
continue;
//跑业务异常 商品券不存 //跑业务异常 商品券不存
} else { }
if(useCoupon){ if (cartGoods.getCartGoodsUid().startsWith(CommonsConstant.COUPON_PREFIX)) {
validCouponMap.put(couponCode, checkSpqInfo);
}
if (!GoodsTypeEnum.BUY_M_SEND_N_COUPON.getGoodsType().equals(cartGoods.getGoodsType())) {
validCouponMap.put(couponCode + checkSpqInfo.getSkuId(), checkSpqInfo); validCouponMap.put(couponCode + checkSpqInfo.getSkuId(), checkSpqInfo);
} else{
validCouponMap.put(couponCode, checkSpqInfo); validCouponMap.put(couponCode, checkSpqInfo);
} }
if (spqIdToCartUuid.containsKey(couponCode)){
if (spqIdToCartUuid.containsKey(couponCode)) {
List<String> uuidList = spqIdToCartUuid.get(couponCode); List<String> uuidList = spqIdToCartUuid.get(couponCode);
uuidList.add(cartGoods.getCartGoodsUid()); uuidList.add(cartGoods.getCartGoodsUid());
spqIdToCartUuid.put(couponCode, uuidList); spqIdToCartUuid.put(couponCode, uuidList);
...@@ -132,33 +145,24 @@ public class CalculationSharingDiscountService { ...@@ -132,33 +145,24 @@ public class CalculationSharingDiscountService {
uuidList.add(cartGoods.getCartGoodsUid()); uuidList.add(cartGoods.getCartGoodsUid());
spqIdToCartUuid.put(couponCode, uuidList); spqIdToCartUuid.put(couponCode, uuidList);
} }
validCouponMap.put(couponCode, checkSpqInfo);
cartGoods.setName(checkSpqInfo.getCouponName()); cartGoods.setName(checkSpqInfo.getCouponName());
cartGoods.setSpuName(checkSpqInfo.getCouponName()); cartGoods.setSpuName(checkSpqInfo.getCouponName());
cartGoods.setStockLimit(checkSpqInfo.isStockLimit()); cartGoods.setStockLimit(checkSpqInfo.isStockLimit());
//买M送N券不赋值券名称
if (GoodsTypeEnum.BUY_M_SEND_N_COUPON.getGoodsType().equals(cartGoods.getGoodsType())) {
cartGoods.setName(checkSpqInfo.getSkuName());
cartGoods.setSpuName(checkSpqInfo.getSpuName());
}
CalculationSharingDiscountRequestDto.CalculationDiscountCoupon coupon = new CalculationSharingDiscountRequestDto.CalculationDiscountCoupon(); CalculationSharingDiscountRequestDto.CalculationDiscountCoupon coupon = new CalculationSharingDiscountRequestDto.CalculationDiscountCoupon();
coupon.setCode(checkSpqInfo.getCouponCode()); coupon.setCode(checkSpqInfo.getCouponCode());
coupon.setActivityCode(checkSpqInfo.getActiveCode()); coupon.setActivityCode(checkSpqInfo.getActiveCode());
CalculationSharingDiscountRequestDto.CalculationDiscountCoupon calculationDiscountCoupon = coupons.stream().filter(p -> coupon.getActivityCode().equals(p.getActivityCode()) && coupon.getCode().equals(p.getCode())).findFirst().orElse(null); CalculationSharingDiscountRequestDto.CalculationDiscountCoupon calculationDiscountCoupon = coupons.stream().filter(p -> coupon.getActivityCode().equals(p.getActivityCode()) && coupon.getCode().equals(p.getCode())).findFirst().orElse(null);
if (calculationDiscountCoupon == null){ if (calculationDiscountCoupon == null) {
coupons.add(coupon); coupons.add(coupon);
} }
// 添加商品券代表的商品放入促销 // 添加商品券代表的商品放入促销
String goodsId = StringUtils.isNotBlank(checkSpqInfo.getSkuId()) ? checkSpqInfo.getSkuId() : checkSpqInfo.getSpuId(); String goodsId = StringUtils.isNotBlank(checkSpqInfo.getSkuId()) ? checkSpqInfo.getSkuId() : checkSpqInfo.getSpuId();
if (GoodsTypeEnum.HG_COUPON_GOODS.getGoodsType().equals(cartGoods.getGoodsType())) { this.setSpqDiscountGoods(calculationDiscountGoodsList, cartGoods, goodsId, checkSpqInfo.getPrice(), couponCode);
this.setSpqDiscountGoods(calculationDiscountGoodsList, cartGoods, goodsId, checkSpqInfo.getPrice(), cartGoods.getSpuId());
} else {
this.setSpqDiscountGoods(calculationDiscountGoodsList, cartGoods, goodsId, checkSpqInfo.getPrice());
}
}
}
if (GoodsTypeEnum.SET_MEAL_GOODS.getGoodsType().equals(cartGoods.getGoodsType())) {
if (CollectionUtils.isEmpty(cartGoods.getProductGroupList()) && CollectionUtils.isEmpty(cartGoods.getProductComboList())) {
cartGoodsList.remove(i);
assortmentSdkService.setShoppingCart(partnerId, storeId, userId, cartGoodsList, null, null, this.shoppingCartBaseService,bizType);
throw new ServiceException(ResponseResult.SHOPPING_CART_NO_MEAL);
}
} }
} }
...@@ -184,7 +188,7 @@ public class CalculationSharingDiscountService { ...@@ -184,7 +188,7 @@ public class CalculationSharingDiscountService {
} }
//剔除商品数量为空的 //剔除商品数量为空的
calculationDiscountGoodsList.removeIf(v->v.getGoodsQuantity().equals(0)); calculationDiscountGoodsList.removeIf(v -> v.getGoodsQuantity().equals(0));
if (CollectionUtils.isEmpty(calculationDiscountGoodsList)) { if (CollectionUtils.isEmpty(calculationDiscountGoodsList)) {
//throw new BizServiceException(ResponseResult.SHOPPING_CART_COUPON_NOT_EXIST,"参数促销计算商品有异常"); //throw new BizServiceException(ResponseResult.SHOPPING_CART_COUPON_NOT_EXIST,"参数促销计算商品有异常");
return null; return null;
...@@ -193,18 +197,15 @@ public class CalculationSharingDiscountService { ...@@ -193,18 +197,15 @@ public class CalculationSharingDiscountService {
//组装促销 //组装促销
calculationSharingDiscountRequestDto.setGoods(calculationDiscountGoodsList); calculationSharingDiscountRequestDto.setGoods(calculationDiscountGoodsList);
calculationSharingDiscountRequestDto.setCoupons(coupons); calculationSharingDiscountRequestDto.setCoupons(coupons);
calculationSharingDiscountRequestDto.setOrgIds(commonService.getOrgIdsForCoupon(partnerId,storeId)); calculationSharingDiscountRequestDto.setOrgIds(commonService.getOrgIdsForCoupon(partnerId, storeId));
calculationSharingDiscountRequestDto.setDistributionFee(deliveryAmount); calculationSharingDiscountRequestDto.setDistributionFee(deliveryAmount);
calculationSharingDiscountRequestDto.setIsMember(isMember); calculationSharingDiscountRequestDto.setIsMember(isMember);
CalculationSharingDiscountResponseDto sharingDiscountResponseDto;
// 构建买一送一寄杯活动用户选择信息 // 构建买一送一寄杯活动用户选择信息
ActiveService activeService = activeFactory.getBuildChooseGoodsService(partnerId); ActiveService activeService = activeFactory.getBuildChooseGoodsService(partnerId);
activeService.buildChooseGoodsService(calculationSharingDiscountRequestDto,shoppingCartInfoRequestVo == null ? null : shoppingCartInfoRequestVo.getChooseGoods()); activeService.buildChooseGoodsService(calculationSharingDiscountRequestDto, shoppingCartInfoRequestVo == null ? null : shoppingCartInfoRequestVo.getChooseGoods());
try { //算价
sharingDiscountResponseDto = activityClient.calculationSharingDiscount(calculationSharingDiscountRequestDto); CalculationSharingDiscountResponseDto sharingDiscountResponseDto = activityClient.calculationSharingDiscount(calculationSharingDiscountRequestDto);
} if(sharingDiscountResponseDto == null){
catch (Exception e) {
ErrorLog.errorConvertJson(this.getClass(), JsonUtil.toJSONString(calculationSharingDiscountRequestDto), e);
throw new ServiceException(ResponseResult.OPERATE_TOO_OFTEN); throw new ServiceException(ResponseResult.OPERATE_TOO_OFTEN);
} }
// 返回成功 // 返回成功
...@@ -226,8 +227,8 @@ public class CalculationSharingDiscountService { ...@@ -226,8 +227,8 @@ public class CalculationSharingDiscountService {
} }
// 这个是专门给coco使用的券验证错误的异常,message要抛出去 // 这个是专门给coco使用的券验证错误的异常,message要抛出去
if(sharingDiscountResponseDto != null && StringUtils.equals(sharingDiscountResponseDto.getStatusCode(), ResponseCodeConstant.COCO_RESPONSE_COUPON_ERR_STR)){ if (sharingDiscountResponseDto != null && StringUtils.equals(sharingDiscountResponseDto.getStatusCode(), ResponseCodeConstant.COCO_RESPONSE_COUPON_ERR_STR)) {
throw new BizServiceException(ResponseResult.COCO_COUPON_VALIDATOR_FAIL,sharingDiscountResponseDto.getMsg()); throw new BizServiceException(ResponseResult.COCO_COUPON_VALIDATOR_FAIL, sharingDiscountResponseDto.getMsg());
} }
// 支付宝华莱士紧急修改代码,当促销返回103错误码时,需要报券不适用于该门店,且清空购物车 // 支付宝华莱士紧急修改代码,当促销返回103错误码时,需要报券不适用于该门店,且清空购物车
...@@ -254,6 +255,7 @@ public class CalculationSharingDiscountService { ...@@ -254,6 +255,7 @@ public class CalculationSharingDiscountService {
/** /**
* 实物商品 * 实物商品
*
* @param calculationDiscountGoodsList * @param calculationDiscountGoodsList
* @param cartGoods * @param cartGoods
*/ */
...@@ -267,9 +269,8 @@ public class CalculationSharingDiscountService { ...@@ -267,9 +269,8 @@ public class CalculationSharingDiscountService {
calculationDiscountGoods.setAddCartTime(cartGoods.getAddCartTime() == null ? 0 : cartGoods.getAddCartTime()); calculationDiscountGoods.setAddCartTime(cartGoods.getAddCartTime() == null ? 0 : cartGoods.getAddCartTime());
//if (cartGoods.getGoodsType().equals(GoodsTypeEnum.SET_MEAL_GOODS)) //if (cartGoods.getGoodsType().equals(GoodsTypeEnum.SET_MEAL_GOODS))
if (CollectionUtils.isNotEmpty(cartGoods.getProductGroupList()) || CollectionUtils.isNotEmpty(cartGoods.getProductComboList())) { if (CollectionUtils.isNotEmpty(cartGoods.getProductGroupList()) || CollectionUtils.isNotEmpty(cartGoods.getProductComboList())) {
calculationDiscountGoods.setOriginalPrice(cartGoods.getFinalPrice()!=null ? cartGoods.getFinalPrice() : cartGoods.getOriginalPrice()); calculationDiscountGoods.setOriginalPrice(cartGoods.getFinalPrice() != null ? cartGoods.getFinalPrice() : cartGoods.getOriginalPrice());
} } else {
else {
calculationDiscountGoods.setOriginalPrice(cartGoods.getOriginalPrice()); calculationDiscountGoods.setOriginalPrice(cartGoods.getOriginalPrice());
} }
calculationDiscountGoods.setMemberDiscount(cartGoods.getMemberDiscount()); calculationDiscountGoods.setMemberDiscount(cartGoods.getMemberDiscount());
...@@ -321,27 +322,29 @@ public class CalculationSharingDiscountService { ...@@ -321,27 +322,29 @@ public class CalculationSharingDiscountService {
/** /**
* 组队券码商品 * 组队券码商品
*
* @param calculationDiscountGoodsList * @param calculationDiscountGoodsList
* @param cartGoods * @param cartGoods
* @param goodsId * @param goodsId
* @param originalPrice * @param originalPrice
*/ */
private void setSpqDiscountGoods(List<CalculationSharingDiscountRequestDto.CalculationDiscountGoods> calculationDiscountGoodsList // private void setSpqDiscountGoods(List<CalculationSharingDiscountRequestDto.CalculationDiscountGoods> calculationDiscountGoodsList
, CartGoods cartGoods, String goodsId, Long originalPrice) { // , CartGoods cartGoods, String goodsId, Long originalPrice) {
CalculationSharingDiscountRequestDto.CalculationDiscountGoods calculationDiscountGoods = new CalculationSharingDiscountRequestDto.CalculationDiscountGoods(); // CalculationSharingDiscountRequestDto.CalculationDiscountGoods calculationDiscountGoods = new CalculationSharingDiscountRequestDto.CalculationDiscountGoods();
calculationDiscountGoods.setGoodsId(goodsId); // calculationDiscountGoods.setGoodsId(goodsId);
calculationDiscountGoods.setCartGoodsUid(cartGoods.getCartGoodsUid()); // calculationDiscountGoods.setCartGoodsUid(cartGoods.getCartGoodsUid());
calculationDiscountGoods.setAddCartTime(cartGoods.getAddCartTime() == null ? 0 : cartGoods.getAddCartTime()); // calculationDiscountGoods.setAddCartTime(cartGoods.getAddCartTime() == null ? 0 : cartGoods.getAddCartTime());
calculationDiscountGoods.setGoodsQuantity(cartGoods.getQty()); // calculationDiscountGoods.setGoodsQuantity(cartGoods.getQty());
calculationDiscountGoods.setOriginalPrice(originalPrice); // calculationDiscountGoods.setOriginalPrice(originalPrice);
calculationDiscountGoods.setMemberDiscount(100); // calculationDiscountGoods.setMemberDiscount(100);
this.setCalculationDiscountGoods(calculationDiscountGoodsList,calculationDiscountGoods); // this.setCalculationDiscountGoods(calculationDiscountGoodsList, calculationDiscountGoods);
} // }
private void setSpqDiscountGoods(List<CalculationSharingDiscountRequestDto.CalculationDiscountGoods> calculationDiscountGoodsList private void setSpqDiscountGoods(List<CalculationSharingDiscountRequestDto.CalculationDiscountGoods> calculationDiscountGoodsList
, CartGoods cartGoods , CartGoods cartGoods
, String goodsId , String goodsId
, Long originalPrice , Long originalPrice
,String couponCode) { , String couponCode) {
CalculationSharingDiscountRequestDto.CalculationDiscountGoods calculationDiscountGoods = new CalculationSharingDiscountRequestDto.CalculationDiscountGoods(); CalculationSharingDiscountRequestDto.CalculationDiscountGoods calculationDiscountGoods = new CalculationSharingDiscountRequestDto.CalculationDiscountGoods();
calculationDiscountGoods.setGoodsId(goodsId); calculationDiscountGoods.setGoodsId(goodsId);
calculationDiscountGoods.setCartGoodsUid(cartGoods.getCartGoodsUid()); calculationDiscountGoods.setCartGoodsUid(cartGoods.getCartGoodsUid());
...@@ -350,23 +353,23 @@ public class CalculationSharingDiscountService { ...@@ -350,23 +353,23 @@ public class CalculationSharingDiscountService {
calculationDiscountGoods.setOriginalPrice(originalPrice); calculationDiscountGoods.setOriginalPrice(originalPrice);
calculationDiscountGoods.setMemberDiscount(100); calculationDiscountGoods.setMemberDiscount(100);
calculationDiscountGoods.setCouponCode(couponCode); calculationDiscountGoods.setCouponCode(couponCode);
this.setCalculationDiscountGoods(calculationDiscountGoodsList,calculationDiscountGoods); this.setCalculationDiscountGoods(calculationDiscountGoodsList, calculationDiscountGoods);
} }
/** /**
* 需要促销计算的商品 * 需要促销计算的商品
*
* @param calculationDiscountGoodsList * @param calculationDiscountGoodsList
* @param calculationDiscountGoods * @param calculationDiscountGoods
*/ */
private void setCalculationDiscountGoods(List<CalculationSharingDiscountRequestDto.CalculationDiscountGoods> calculationDiscountGoodsList private void setCalculationDiscountGoods(List<CalculationSharingDiscountRequestDto.CalculationDiscountGoods> calculationDiscountGoodsList
,CalculationSharingDiscountRequestDto.CalculationDiscountGoods calculationDiscountGoods) { , CalculationSharingDiscountRequestDto.CalculationDiscountGoods calculationDiscountGoods) {
int index = 0; int index = 0;
//当商品已经存在时,需要累加数量 //当商品已经存在时,需要累加数量
if ((index = calculationDiscountGoodsList.indexOf(calculationDiscountGoods))>=0) { if ((index = calculationDiscountGoodsList.indexOf(calculationDiscountGoods)) >= 0) {
CalculationSharingDiscountRequestDto.CalculationDiscountGoods old = calculationDiscountGoodsList.get(index); CalculationSharingDiscountRequestDto.CalculationDiscountGoods old = calculationDiscountGoodsList.get(index);
calculationDiscountGoodsList.get(index).setGoodsQuantity(old.getGoodsQuantity()+calculationDiscountGoods.getGoodsQuantity()); calculationDiscountGoodsList.get(index).setGoodsQuantity(old.getGoodsQuantity() + calculationDiscountGoods.getGoodsQuantity());
} } else {
else {
calculationDiscountGoodsList.add(calculationDiscountGoods); calculationDiscountGoodsList.add(calculationDiscountGoods);
} }
......
...@@ -307,7 +307,8 @@ public class CouponDiscountCalculation { ...@@ -307,7 +307,8 @@ public class CouponDiscountCalculation {
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount couponResults : couponDiscounts) { for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount couponResults : couponDiscounts) {
//前端计算小计拿商品现价累计减couponDiscount,商品券换购券现价已排除 //前端计算小计拿商品现价累计减couponDiscount,商品券换购券现价已排除
if(ActivityTypeEnum.TYPE_33.getCode()== couponResults.getType() if(ActivityTypeEnum.TYPE_33.getCode()== couponResults.getType()
|| ActivityTypeEnum.TYPE_32.getCode()== couponResults.getType()){ || ActivityTypeEnum.TYPE_32.getCode()== couponResults.getType()
|| Objects.equals(ActivityTypeEnum.TYPE_330.getCode(),couponResults.getType())){
continue; continue;
} }
couponDiscount = couponDiscount + (couponResults.getDiscount() == null ? 0 : couponResults.getDiscount()); couponDiscount = couponDiscount + (couponResults.getDiscount() == null ? 0 : couponResults.getDiscount());
......
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