Commit d96ac350 by chongfu.liang

Merge branch 'feature/20210311-频次券bugfix-lcf'

parents 17c72501 9d022a57
...@@ -37,4 +37,7 @@ public class CheckSpqInfoResponseDto { ...@@ -37,4 +37,7 @@ public class CheckSpqInfoResponseDto {
*/ */
private Integer couponType; private Integer couponType;
private List<CartGoods.CartGoodsExtra> extras; private List<CartGoods.CartGoodsExtra> extras;
private Boolean isMultiCoupon;
} }
...@@ -17,6 +17,7 @@ import com.alibaba.fastjson.JSON; ...@@ -17,6 +17,7 @@ import com.alibaba.fastjson.JSON;
import com.freemud.application.sdk.api.base.SDKCommonBaseContextWare; import com.freemud.application.sdk.api.base.SDKCommonBaseContextWare;
import com.freemud.application.sdk.api.productcenter.domain.ProductBeanDTO; import com.freemud.application.sdk.api.productcenter.domain.ProductBeanDTO;
import com.freemud.sdk.api.assortment.shoppingcart.constant.CommonsConstant; import com.freemud.sdk.api.assortment.shoppingcart.constant.CommonsConstant;
import javafx.util.Pair;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
...@@ -114,7 +115,7 @@ public interface ShoppingCartNewService { ...@@ -114,7 +115,7 @@ public interface ShoppingCartNewService {
* @param productIds * @param productIds
* @return * @return
*/ */
default String validCoupon(String partnerId default Pair<String, Boolean> validCoupon(String partnerId
, String storeId , String storeId
, String couponCode , String couponCode
, List<Long> productIds , List<Long> productIds
...@@ -132,7 +133,7 @@ public interface ShoppingCartNewService { ...@@ -132,7 +133,7 @@ public interface ShoppingCartNewService {
} }
productIds.add(Long.parseLong(checkSpqInfoResponseDto.getSkuId())); productIds.add(Long.parseLong(checkSpqInfoResponseDto.getSkuId()));
spuId2 = checkSpqInfoResponseDto.getSkuId(); spuId2 = checkSpqInfoResponseDto.getSkuId();
return spuId2; return new Pair(spuId2, checkSpqInfoResponseDto.getIsMultiCoupon());
} }
/** /**
...@@ -146,7 +147,7 @@ public interface ShoppingCartNewService { ...@@ -146,7 +147,7 @@ public interface ShoppingCartNewService {
* @param goodsId * @param goodsId
* @return * @return
*/ */
default String validCoupon(String partnerId default Pair<String, Boolean> validCoupon(String partnerId
, String storeId , String storeId
, String couponCode , String couponCode
, List<Long> productIds , List<Long> productIds
...@@ -164,7 +165,7 @@ public interface ShoppingCartNewService { ...@@ -164,7 +165,7 @@ public interface ShoppingCartNewService {
productIds.add(Long.parseLong(checkSpqInfoResponseDto.getSkuId())); productIds.add(Long.parseLong(checkSpqInfoResponseDto.getSkuId()));
couponProductDto.setType(checkSpqInfoResponseDto.getCouponType()); couponProductDto.setType(checkSpqInfoResponseDto.getCouponType());
spuId2 = checkSpqInfoResponseDto.getSkuId(); spuId2 = checkSpqInfoResponseDto.getSkuId();
return spuId2; return new Pair(spuId2, checkSpqInfoResponseDto.getIsMultiCoupon());
} }
/** /**
......
...@@ -750,6 +750,11 @@ public class CouponServiceImpl implements CouponService { ...@@ -750,6 +750,11 @@ public class CouponServiceImpl implements CouponService {
dto.setActiveCode(couponDetailResponseDto.getDetails().get(0).getActive().getActiveCode()); dto.setActiveCode(couponDetailResponseDto.getDetails().get(0).getActive().getActiveCode());
dto.setCouponName(couponDetailResponseDto.getDetails().get(0).getTitle()); dto.setCouponName(couponDetailResponseDto.getDetails().get(0).getTitle());
dto.setActivityName(couponDetailResponseDto.getDetails().get(0).getActive().getActiveName()); dto.setActivityName(couponDetailResponseDto.getDetails().get(0).getActive().getActiveName());
if (couponDetailResponseDto.getDetails().get(0).getActive().getMaxRedeemTimes() != null && couponDetailResponseDto.getDetails().get(0).getActive().getMaxRedeemTimes() > 1){
dto.setIsMultiCoupon(true);
} else {
dto.setIsMultiCoupon(false);
}
dto.setPrice(productsVo.getFinalPrice()); dto.setPrice(productsVo.getFinalPrice());
dto.setSpuId(productsVo.getSpuId()); dto.setSpuId(productsVo.getSpuId());
dto.setSpuName(productsVo.getSkuName()); dto.setSpuName(productsVo.getSkuName());
...@@ -912,6 +917,11 @@ public class CouponServiceImpl implements CouponService { ...@@ -912,6 +917,11 @@ public class CouponServiceImpl implements CouponService {
return null; return null;
} }
CheckSpqInfoResponseDto dto = new CheckSpqInfoResponseDto(); CheckSpqInfoResponseDto dto = new CheckSpqInfoResponseDto();
if (couponDetailResponseDto.getDetails().get(0).getActive().getMaxRedeemTimes() != null && couponDetailResponseDto.getDetails().get(0).getActive().getMaxRedeemTimes() > 1){
dto.setIsMultiCoupon(true);
} else {
dto.setIsMultiCoupon(false);
}
dto.setCouponCode(couponCode); dto.setCouponCode(couponCode);
dto.setActiveCode(couponActivityDetail.getActive().getActiveCode()); dto.setActiveCode(couponActivityDetail.getActive().getActiveCode());
dto.setCouponName(couponActivityDetail.getTitle()); dto.setCouponName(couponActivityDetail.getTitle());
......
...@@ -43,6 +43,7 @@ import com.freemud.sdk.api.assortment.shoppingcart.domain.CartParamDto; ...@@ -43,6 +43,7 @@ import com.freemud.sdk.api.assortment.shoppingcart.domain.CartParamDto;
import com.freemud.sdk.api.assortment.shoppingcart.enums.BusinessTypeEnum; import com.freemud.sdk.api.assortment.shoppingcart.enums.BusinessTypeEnum;
import com.freemud.sdk.api.assortment.shoppingcart.request.CheckCartRequest; import com.freemud.sdk.api.assortment.shoppingcart.request.CheckCartRequest;
import com.freemud.sdk.api.assortment.shoppingcart.service.impl.MealCartBaseServiceImpl; import com.freemud.sdk.api.assortment.shoppingcart.service.impl.MealCartBaseServiceImpl;
import javafx.util.Pair;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -121,7 +122,8 @@ public class ShoppingCartMealServiceImpl implements ShoppingCartNewService { ...@@ -121,7 +122,8 @@ public class ShoppingCartMealServiceImpl implements ShoppingCartNewService {
productIds.add(Long.parseLong(goodsId)); productIds.add(Long.parseLong(goodsId));
} else { } else {
//校验券是否有效 //校验券是否有效
spuId2 = validCoupon(partnerId, storeId, spuId, productIds, BusinessTypeEnum.getByType(requestVo.getMenuType()).getCode(), null); Pair<String, Boolean> pair = validCoupon(partnerId, storeId, spuId, productIds, BusinessTypeEnum.getByType(requestVo.getMenuType()).getCode(), null, null);
spuId2 = pair.getKey();
} }
// 获取商品信息 // 获取商品信息
List<ProductBeanDTO> productBeanListSpuClass = List<ProductBeanDTO> productBeanListSpuClass =
......
...@@ -75,6 +75,8 @@ import com.freemud.sdk.api.assortment.shoppingcart.request.CheckCartRequest; ...@@ -75,6 +75,8 @@ import com.freemud.sdk.api.assortment.shoppingcart.request.CheckCartRequest;
import com.freemud.sdk.api.assortment.shoppingcart.service.ShoppingCartBaseService; import com.freemud.sdk.api.assortment.shoppingcart.service.ShoppingCartBaseService;
import com.freemud.sdk.api.assortment.shoppingcart.service.impl.ShoppingCartBaseServiceImpl; import com.freemud.sdk.api.assortment.shoppingcart.service.impl.ShoppingCartBaseServiceImpl;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.sun.org.apache.xpath.internal.operations.Bool;
import javafx.util.Pair;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.ObjectUtils; import org.apache.commons.lang.ObjectUtils;
...@@ -291,16 +293,21 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -291,16 +293,21 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
//商品skuId或者商品券的商品id //商品skuId或者商品券的商品id
String spuId2 = spuId; String spuId2 = spuId;
CouponProductDto couponProductDto = new CouponProductDto(); CouponProductDto couponProductDto = new CouponProductDto();
Boolean isMultiCoupon = false;
if (StringUtils.isBlank(couponCode)) { if (StringUtils.isBlank(couponCode)) {
productIds.add(Long.parseLong(goodsId)); productIds.add(Long.parseLong(goodsId));
} else { } else {
//校验券是否有效 这里是新的商品券支持多商品及换购券 //校验券是否有效 这里是新的商品券支持多商品及换购券
if (StringUtils.isNotBlank(skuId)) { if (StringUtils.isNotBlank(skuId)) {
spuId2 = validCoupon(partnerId, storeId, couponCode, productIds, BusinessTypeEnum.getByType(addShoppingCartGoodsRequestVo.getMenuType()).getCode(), skuId, couponProductDto); Pair<String, Boolean> pair = validCoupon(partnerId, storeId, couponCode, productIds, BusinessTypeEnum.getByType(addShoppingCartGoodsRequestVo.getMenuType()).getCode(), skuId, couponProductDto);
spuId2 = pair.getKey();
isMultiCoupon = pair.getValue();
cartGoods.setGoodsId(spuId); cartGoods.setGoodsId(spuId);
} else { } else {
// 老版本商品券 // 老版本商品券
spuId2 = validCoupon(partnerId, storeId, couponCode, productIds, BusinessTypeEnum.getByType(addShoppingCartGoodsRequestVo.getMenuType()).getCode(), couponProductDto); Pair<String, Boolean> pair = validCoupon(partnerId, storeId, couponCode, productIds, BusinessTypeEnum.getByType(addShoppingCartGoodsRequestVo.getMenuType()).getCode(), couponProductDto);
spuId2 = pair.getKey();
isMultiCoupon = pair.getValue();
} }
} }
// 获取商品详细信息 // 获取商品详细信息
...@@ -342,7 +349,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -342,7 +349,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
} else { } else {
// 当商品是商品券,里面会判断如果购物车中已有商品券,会将cartGoods的CartGoodsUid设为null // 当商品是商品券,里面会判断如果购物车中已有商品券,会将cartGoods的CartGoodsUid设为null
this.addProductGoods(addShoppingCartGoodsRequestVo, cartGoods, spuId2, userId, shoppingCartGoodsResponseVo, this.addProductGoods(addShoppingCartGoodsRequestVo, cartGoods, spuId2, userId, shoppingCartGoodsResponseVo,
spuId, allCartGoodsList, productBeanListSpuClass, couponProductDto, couponCode); spuId, allCartGoodsList, productBeanListSpuClass, couponProductDto, couponCode, isMultiCoupon);
} }
Long deliveryAmount = calculateDeliveryAmount(receiveId, partnerId, storeId, userLoginInfoDto.getWxAppid(), shoppingCartGoodsResponseVo,addShoppingCartGoodsRequestVo.getOrderType()); Long deliveryAmount = calculateDeliveryAmount(receiveId, partnerId, storeId, userLoginInfoDto.getWxAppid(), shoppingCartGoodsResponseVo,addShoppingCartGoodsRequestVo.getOrderType());
...@@ -1721,7 +1728,9 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -1721,7 +1728,9 @@ 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) { , List<CartGoods> allCartGoodsList, List<ProductBean> productBeanListSpuClass, CouponProductDto couponProductDto, String couponCode, Boolean isMultiCoupon) {
// 设置商品类型为商品券 // 设置商品类型为商品券
if (CouponTypeEnum.TYPE_4.getCode().equals(couponProductDto.getType())) { if (CouponTypeEnum.TYPE_4.getCode().equals(couponProductDto.getType())) {
...@@ -1736,6 +1745,12 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -1736,6 +1745,12 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
} }
// 商品券Id // 商品券Id
String spqId = spuId.substring(CommonsConstant.COUPON_PREFIX.length()); String spqId = spuId.substring(CommonsConstant.COUPON_PREFIX.length());
if (CollectionUtils.isNotEmpty(allCartGoodsList) && !isMultiCoupon){
CartGoods sameCartGoods = allCartGoodsList.stream().filter(p -> p.getSpuId().equals(spqId)).findFirst().orElse(null);
if (sameCartGoods != null && sameCartGoods.getQty() != null && sameCartGoods.getQty() > 0){
throw new ServiceException(ResponseResult.SHOPPING_CART_GOODS_COUPON_CAN_NOT_USE);
}
}
cartGoods.setSpuId(spqId); cartGoods.setSpuId(spqId);
cartGoods.setSkuId(spuId2); cartGoods.setSkuId(spuId2);
cartGoods.setOriginalPrice(0L); cartGoods.setOriginalPrice(0L);
......
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