Commit 7ca5f6fc by chongfu.liang

Merge branch 'feature/20210128-频次券需求-lcf'

# Conflicts:
#	shopping-cart-application-service/pom.xml
#	shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ShoppingCartNewServiceImpl.java
parents e4141454 2cf552e2
...@@ -58,7 +58,7 @@ public class ShoppingCartAdapter { ...@@ -58,7 +58,7 @@ public class ShoppingCartAdapter {
validateShopProductRequest.setProductTypeList(new ArrayList<>()); validateShopProductRequest.setProductTypeList(new ArrayList<>());
for (CartGoods cartGoods : checkCartRequest.getCartGoodsList()) { for (CartGoods cartGoods : checkCartRequest.getCartGoodsList()) {
// 过滤非商品券商品 // 过滤非商品券商品
if (cartGoods.getCartGoodsUid().startsWith(CommonsConstant.COUPON_PREFIX)) { if (cartGoods.getCartGoodsUid().startsWith(CommonsConstant.COUPON_PREFIX) || StringUtils.isNotBlank(cartGoods.getCouponCode())) {
continue; continue;
} }
ValidateShopProductType productType = new ValidateShopProductType(); ValidateShopProductType productType = new ValidateShopProductType();
......
...@@ -393,7 +393,10 @@ public interface ShoppingCartBaseService { ...@@ -393,7 +393,10 @@ public interface ShoppingCartBaseService {
//获取所有商品券cartGoodsUid=sqp+code //获取所有商品券cartGoodsUid=sqp+code
List<String> couponIds = cartGoodsList.parallelStream() List<String> couponIds = cartGoodsList.parallelStream()
.filter(k ->StringUtils.isNotEmpty(k.getCartGoodsUid())&& k.getCartGoodsUid().startsWith(CommonsConstant.COUPON_PREFIX)).map(CartGoods::getSpuId).collect(Collectors.toList()); .filter(k ->StringUtils.isNotEmpty(k.getCartGoodsUid())&& k.getCartGoodsUid().startsWith(CommonsConstant.COUPON_PREFIX)).map(CartGoods::getSpuId).collect(Collectors.toList());
if (CollectionUtils.isEmpty(couponIds)) {
couponIds = cartGoodsList.parallelStream()
.filter(k ->StringUtils.isNotBlank(k.getCouponCode())).map(CartGoods::getCouponCode).collect(Collectors.toList());
}
if (CollectionUtils.isEmpty(couponIds)) { if (CollectionUtils.isEmpty(couponIds)) {
return goodsStates; return goodsStates;
} }
...@@ -406,7 +409,7 @@ public interface ShoppingCartBaseService { ...@@ -406,7 +409,7 @@ public interface ShoppingCartBaseService {
List<String> activityCode; List<String> activityCode;
Map<String, Boolean> couponOrderWayMap; Map<String, Boolean> couponOrderWayMap;
detailsMap = detailVOList.stream().collect(Collectors.toMap(p -> p.getCode(), (p) -> p)); detailsMap = detailVOList.stream().collect(Collectors.toMap(p -> p.getCode(), (p) -> p, (v1, v2) ->v1));
activityCode = detailVOList.stream().map(p -> p.getActiveCode()).collect(Collectors.toList()); activityCode = detailVOList.stream().map(p -> p.getActiveCode()).collect(Collectors.toList());
couponOrderWayMap = getCouponOrderWay(partnerId, activityCode, orderWay, trackingNo); couponOrderWayMap = getCouponOrderWay(partnerId, activityCode, orderWay, trackingNo);
//遍历商品券是否有当前点餐方式点餐 //遍历商品券是否有当前点餐方式点餐
...@@ -434,6 +437,11 @@ public interface ShoppingCartBaseService { ...@@ -434,6 +437,11 @@ public interface ShoppingCartBaseService {
List<CartGoods> cartGoodsByProduct = cartGoodsList.stream() List<CartGoods> cartGoodsByProduct = cartGoodsList.stream()
.filter(cartGoods -> cartGoods.getCartGoodsUid().startsWith(CommonsConstant.COUPON_PREFIX)) .filter(cartGoods -> cartGoods.getCartGoodsUid().startsWith(CommonsConstant.COUPON_PREFIX))
.collect(Collectors.toList()); .collect(Collectors.toList());
if (CollectionUtils.isEmpty(cartGoodsByProduct)){
cartGoodsByProduct = cartGoodsList.stream()
.filter(cartGoods -> StringUtils.isNotBlank(cartGoods.getCouponCode()))
.collect(Collectors.toList());
}
for (CartGoods cartGoods : cartGoodsByProduct) { for (CartGoods cartGoods : cartGoodsByProduct) {
DetailVO detail = detailsMap.get(cartGoods.getSpuId()); DetailVO detail = detailsMap.get(cartGoods.getSpuId());
String activeCode = detail != null ? detail.getActiveCode() : ""; String activeCode = detail != null ? detail.getActiveCode() : "";
......
...@@ -414,7 +414,7 @@ public class ShoppingCartConvertAdapter { ...@@ -414,7 +414,7 @@ public class ShoppingCartConvertAdapter {
cartGoods.setQty(qty); cartGoods.setQty(qty);
cartGoods.setCouponCode(addShoppingCartGoodsRequestVo.getCouponCode()); cartGoods.setCouponCode(addShoppingCartGoodsRequestVo.getCouponCode());
Integer goodsType = StringUtils.isEmpty(skuId)||ObjectUtils.equals(spuId,skuId) ? GoodsTypeEnum.SPU_GOODS.getGoodsType() : GoodsTypeEnum.SKU_GOODS.getGoodsType(); Integer goodsType = StringUtils.isEmpty(skuId)||ObjectUtils.equals(spuId,skuId) ? GoodsTypeEnum.SPU_GOODS.getGoodsType() : GoodsTypeEnum.SKU_GOODS.getGoodsType();
if (spuId.startsWith(CommonsConstant.COUPON_PREFIX)) { if (spuId.startsWith(CommonsConstant.COUPON_PREFIX) || StringUtils.isNotBlank(addShoppingCartGoodsRequestVo.getCouponCode())) {
goodsType = GoodsTypeEnum.COUPON_GOODS.getGoodsType(); goodsType = GoodsTypeEnum.COUPON_GOODS.getGoodsType();
} else if (CollectionUtils.isNotEmpty(addShoppingCartGoodsRequestVo.getProductComboList()) || CollectionUtils.isNotEmpty(addShoppingCartGoodsRequestVo.getProductGroupList())) { } else if (CollectionUtils.isNotEmpty(addShoppingCartGoodsRequestVo.getProductComboList()) || CollectionUtils.isNotEmpty(addShoppingCartGoodsRequestVo.getProductGroupList())) {
goodsType = GoodsTypeEnum.SET_MEAL_GOODS.getGoodsType(); goodsType = GoodsTypeEnum.SET_MEAL_GOODS.getGoodsType();
......
...@@ -58,6 +58,14 @@ public class ActivityCouponBean { ...@@ -58,6 +58,14 @@ public class ActivityCouponBean {
* 日期描述 * 日期描述
*/ */
private String dateDescribe; private String dateDescribe;
/**
* 今日剩余可使用次数(频次券才包含)
*/
private Integer dailyAvailableTimes;
/**
* 总可使用次数(频次券才包含)
*/
private Integer availableTimes;
/** /**
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
package cn.freemud.entities.vo; package cn.freemud.entities.vo;
import com.freemud.sdk.api.assortment.shoppingcart.constant.CommonsConstant;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
...@@ -425,10 +426,13 @@ public class CartGoods { ...@@ -425,10 +426,13 @@ public class CartGoods {
return true; return true;
if (o == null || getClass() != o.getClass()) if (o == null || getClass() != o.getClass())
return false; return false;
// 原始字符串 // 原始字符串
StringBuilder originalString = new StringBuilder(); StringBuilder originalString = new StringBuilder();
if (StringUtils.isNotBlank(goodsId) && goodsId.startsWith(CommonsConstant.COUPON_PREFIX)){
originalString.append(spuId+skuId);
} else {
originalString.append(goodsId); originalString.append(goodsId);
}
originalString.append(couponCode); originalString.append(couponCode);
if(StringUtils.isNotEmpty(userId)){ if(StringUtils.isNotEmpty(userId)){
...@@ -468,7 +472,12 @@ public class CartGoods { ...@@ -468,7 +472,12 @@ public class CartGoods {
CartGoods cartGoods = (CartGoods) o; CartGoods cartGoods = (CartGoods) o;
StringBuilder currentString = new StringBuilder(); StringBuilder currentString = new StringBuilder();
if (StringUtils.isNotBlank(cartGoods.getGoodsId()) && cartGoods.getGoodsId().startsWith(CommonsConstant.COUPON_PREFIX)){
currentString.append(cartGoods.getSpuId()+cartGoods.getSkuId());
} else {
currentString.append(cartGoods.getGoodsId()); currentString.append(cartGoods.getGoodsId());
}
currentString.append(cartGoods.getCouponCode()); currentString.append(cartGoods.getCouponCode());
if(StringUtils.isNotEmpty(cartGoods.getUserId())){ if(StringUtils.isNotEmpty(cartGoods.getUserId())){
...@@ -506,7 +515,11 @@ public class CartGoods { ...@@ -506,7 +515,11 @@ public class CartGoods {
@Override @Override
public int hashCode() { public int hashCode() {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
if (StringUtils.isNotBlank(goodsId) && goodsId.startsWith(CommonsConstant.COUPON_PREFIX)){
sb.append(spuId+skuId);
} else {
sb.append(goodsId); sb.append(goodsId);
}
if (CollectionUtils.isNotEmpty(extra)) { if (CollectionUtils.isNotEmpty(extra)) {
extra.stream().sorted(Comparator.comparing(CartGoodsExtra::getAttributeId)).forEach(e -> sb.append(e.getAttributeId())); extra.stream().sorted(Comparator.comparing(CartGoodsExtra::getAttributeId)).forEach(e -> sb.append(e.getAttributeId()));
} }
......
...@@ -56,6 +56,16 @@ public class CouponStateVo { ...@@ -56,6 +56,16 @@ public class CouponStateVo {
*/ */
private String limitType; private String limitType;
/** /**
* 今日剩余可使用次数(频次券才包含)
*/
private Integer dailyAvailableTimes;
/**
* 总可使用次数(频次券才包含)
*/
private Integer availableTimes;
/**
* 可用商品 * 可用商品
*/ */
private List<Product> productList; private List<Product> productList;
......
...@@ -110,18 +110,18 @@ public interface ShoppingCartNewService { ...@@ -110,18 +110,18 @@ public interface ShoppingCartNewService {
* *
* @param partnerId * @param partnerId
* @param storeId * @param storeId
* @param spuId * @param couponCode
* @param productIds * @param productIds
* @return * @return
*/ */
default String validCoupon(String partnerId default String validCoupon(String partnerId
, String storeId , String storeId
, String spuId , String couponCode
, List<Long> productIds , List<Long> productIds
, String menuType , String menuType
, CouponProductDto couponProductDto) { , CouponProductDto couponProductDto) {
String spuId2; String spuId2;
CheckSpqInfoRequestDto checkSpqInfoRequestDto = new CheckSpqInfoRequestDto(partnerId, storeId, spuId.substring(CommonsConstant.COUPON_PREFIX.length()), menuType); CheckSpqInfoRequestDto checkSpqInfoRequestDto = new CheckSpqInfoRequestDto(partnerId, storeId, couponCode, menuType);
CouponService couponService = SDKCommonBaseContextWare.getBean(CouponService.class); CouponService couponService = SDKCommonBaseContextWare.getBean(CouponService.class);
CheckSpqInfoResponseDto checkSpqInfoResponseDto = couponService.checkSpqInfo(checkSpqInfoRequestDto); CheckSpqInfoResponseDto checkSpqInfoResponseDto = couponService.checkSpqInfo(checkSpqInfoRequestDto);
if (checkSpqInfoResponseDto == null) { if (checkSpqInfoResponseDto == null) {
...@@ -140,7 +140,7 @@ public interface ShoppingCartNewService { ...@@ -140,7 +140,7 @@ public interface ShoppingCartNewService {
* *
* @param partnerId * @param partnerId
* @param storeId * @param storeId
* @param spuId * @param couponCode
* @param productIds * @param productIds
* @param menuType * @param menuType
* @param goodsId * @param goodsId
...@@ -148,13 +148,13 @@ public interface ShoppingCartNewService { ...@@ -148,13 +148,13 @@ public interface ShoppingCartNewService {
*/ */
default String validCoupon(String partnerId default String validCoupon(String partnerId
, String storeId , String storeId
, String spuId , String couponCode
, List<Long> productIds , List<Long> productIds
, String menuType , String menuType
, String goodsId , String goodsId
, CouponProductDto couponProductDto) { , CouponProductDto couponProductDto) {
String spuId2; String spuId2;
CheckSpqInfoRequestDto checkSpqInfoRequestDto = new CheckSpqInfoRequestDto(partnerId, storeId, spuId.substring(CommonsConstant.COUPON_PREFIX.length()), menuType); CheckSpqInfoRequestDto checkSpqInfoRequestDto = new CheckSpqInfoRequestDto(partnerId, storeId, couponCode, menuType);
CouponService couponService = SDKCommonBaseContextWare.getBean(CouponService.class); CouponService couponService = SDKCommonBaseContextWare.getBean(CouponService.class);
CheckSpqInfoResponseDto checkSpqInfoResponseDto = couponService.checkSpqInfo(checkSpqInfoRequestDto, goodsId); CheckSpqInfoResponseDto checkSpqInfoResponseDto = couponService.checkSpqInfo(checkSpqInfoRequestDto, goodsId);
LogUtil.info("validCoupon.CheckSpqInfoResponseDto", JSON.toJSONString(checkSpqInfoRequestDto),JSON.toJSONString(checkSpqInfoResponseDto)); LogUtil.info("validCoupon.CheckSpqInfoResponseDto", JSON.toJSONString(checkSpqInfoRequestDto),JSON.toJSONString(checkSpqInfoResponseDto));
...@@ -300,7 +300,7 @@ public interface ShoppingCartNewService { ...@@ -300,7 +300,7 @@ public interface ShoppingCartNewService {
updateCartGoodsLegal(cartGoods, userId, shoppingCartGoodsResponseVo, addShoppingCartGoodsRequestVo, allCartGoodsList); updateCartGoodsLegal(cartGoods, userId, shoppingCartGoodsResponseVo, addShoppingCartGoodsRequestVo, allCartGoodsList);
// 如果购物车中有商品券,则当前添加的商品是特价商品时,需要提示“已选商品券,与其他优惠商品不同享,商品将恢复原价” // 如果购物车中有商品券,则当前添加的商品是特价商品时,需要提示“已选商品券,与其他优惠商品不同享,商品将恢复原价”
boolean haveCouponProduct = allCartGoodsList.parallelStream().anyMatch(k -> k.getCartGoodsUid().startsWith(CommonsConstant.COUPON_PREFIX)); boolean haveCouponProduct = allCartGoodsList.parallelStream().anyMatch(k -> (StringUtils.isNotBlank(k.getCouponCode()) || k.getCartGoodsUid().startsWith(CommonsConstant.COUPON_PREFIX)));
if (haveCouponProduct && isSpecialGoods(addShoppingCartGoodsRequestVo.getPartnerId(), addShoppingCartGoodsRequestVo.getShopId(), userId, addShoppingCartGoodsRequestVo.getAppId(), goodsId, addShoppingCartGoodsRequestVo.getOrderType())) { if (haveCouponProduct && isSpecialGoods(addShoppingCartGoodsRequestVo.getPartnerId(), addShoppingCartGoodsRequestVo.getShopId(), userId, addShoppingCartGoodsRequestVo.getAppId(), goodsId, addShoppingCartGoodsRequestVo.getOrderType())) {
// 如果购物车先加入商品券,再加入促销商品,toast提示“已选商品券,与其他优惠商品不同享,商品将恢复原价” // 如果购物车先加入商品券,再加入促销商品,toast提示“已选商品券,与其他优惠商品不同享,商品将恢复原价”
setToastMsgIfNotExist(shoppingCartGoodsResponseVo, ShoppingCartConstant.HAS_GOODS_COUPON_WHEN_ADD_SPECIAL_GOODS); setToastMsgIfNotExist(shoppingCartGoodsResponseVo, ShoppingCartConstant.HAS_GOODS_COUPON_WHEN_ADD_SPECIAL_GOODS);
......
...@@ -23,6 +23,7 @@ import com.freemud.sdk.api.assortment.shoppingcart.enums.BusinessTypeEnum; ...@@ -23,6 +23,7 @@ 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.request.GetProductInfoRequest; import com.freemud.sdk.api.assortment.shoppingcart.request.GetProductInfoRequest;
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 org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
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;
...@@ -148,7 +149,7 @@ public class AssortmentSdkService { ...@@ -148,7 +149,7 @@ public class AssortmentSdkService {
* @param useId * @param useId
* @return * @return
*/ */
public String getShoppingCartCoupon(String partnerId, String storeId, String useId, ShoppingCartBaseService shoppingCartService, Integer type) { public String getShoppingCartCoupon(String partnerId, String storeId, String useId, ShoppingCartBaseServiceImpl shoppingCartService, Integer type) {
com.freemud.sdk.api.assortment.shoppingcart.domain.CartParamDto cartParamDto = getCartParamDto(partnerId, storeId, useId); com.freemud.sdk.api.assortment.shoppingcart.domain.CartParamDto cartParamDto = getCartParamDto(partnerId, storeId, useId);
cartParamDto.setCouponType(type); cartParamDto.setCouponType(type);
......
...@@ -46,8 +46,8 @@ public class CouponPromotionService implements IPromotionService { ...@@ -46,8 +46,8 @@ public class CouponPromotionService implements IPromotionService {
public void updateShoppingCartGoodsDiscount(CouponPromotionVO couponPromotionVO, ActivityQueryDto activityQueryDto, ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult, List<CartGoods> cartGoodsList, ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo, UserLoginInfoDto userLoginInfoDto, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo) { public void updateShoppingCartGoodsDiscount(CouponPromotionVO couponPromotionVO, ActivityQueryDto activityQueryDto, ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult, List<CartGoods> cartGoodsList, ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo, UserLoginInfoDto userLoginInfoDto, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo) {
// 用户选择了查询优惠券信息 // 用户选择了查询优惠券信息
if (couponPromotionVO != null && ObjectUtils.equals(CouponFlag.YES.getCode(), couponPromotionVO.getFlg())) { if (couponPromotionVO != null && ObjectUtils.equals(CouponFlag.YES.getCode(), couponPromotionVO.getFlg())) {
List<CartGoods> tmpCartGoods = cartGoodsList.parallelStream().filter(k -> k.getCartGoodsUid() List<CartGoods> tmpCartGoods = cartGoodsList.parallelStream().filter(k -> (k.getCartGoodsUid()
.startsWith(CommonsConstant.COUPON_PREFIX)).collect(Collectors.toList()); .startsWith(CommonsConstant.COUPON_PREFIX) || StringUtils.isNotBlank(k.getCouponCode()))).collect(Collectors.toList());
// 是否存在商品券 // 是否存在商品券
boolean hasGoodssCoupon = CollectionUtils.isNotEmpty(tmpCartGoods); boolean hasGoodssCoupon = CollectionUtils.isNotEmpty(tmpCartGoods);
// 构建可用不可用优惠券 // 构建可用不可用优惠券
...@@ -85,17 +85,27 @@ public class CouponPromotionService implements IPromotionService { ...@@ -85,17 +85,27 @@ public class CouponPromotionService implements IPromotionService {
shoppingCartGoodsResponseVo.setCouponDiscount(couponDiscount); shoppingCartGoodsResponseVo.setCouponDiscount(couponDiscount);
//循环购物车商品券 //循环购物车商品券
for (CartGoods cartGoods : cartGoodsList) { for (CartGoods cartGoods : cartGoodsList) {
if (cartGoods.getCartGoodsUid().startsWith(CommonsConstant.COUPON_PREFIX)) { String couponCode = cartGoods.getCouponCode();
String spqId = cartGoods.getCartGoodsUid().substring(CommonsConstant.COUPON_PREFIX.length()); boolean useCoupon = true; // 优惠券放在coupon字段而不是uuid中
if (cartGoods.getCartGoodsUid().startsWith(CommonsConstant.COUPON_PREFIX)){
couponCode = cartGoods.getCartGoodsUid().substring(CommonsConstant.COUPON_PREFIX.length());
useCoupon = false;
}
if (StringUtils.isNotBlank(couponCode)) {
// 计算优惠信息时,已将券校验过,放在map中 // 计算优惠信息时,已将券校验过,放在map中
Map<String, CheckSpqInfoResponseDto> validCouponMap = calculationDiscountResult == null ? new HashMap<>() : calculationDiscountResult.getValidCouponMap(); Map<String, CheckSpqInfoResponseDto> validCouponMap = calculationDiscountResult == null ? new HashMap<>() : calculationDiscountResult.getValidCouponMap();
if (MapUtils.isNotEmpty(validCouponMap)) { if (MapUtils.isNotEmpty(validCouponMap)) {
CheckSpqInfoResponseDto checkSpqInfoResponseDto = validCouponMap.get(spqId); CheckSpqInfoResponseDto checkSpqInfoResponseDto = null;
if(useCoupon){
checkSpqInfoResponseDto = validCouponMap.get(couponCode + cartGoods.getSkuId());
} else{
checkSpqInfoResponseDto = validCouponMap.get(couponCode);
}
if (checkSpqInfoResponseDto != null) { if (checkSpqInfoResponseDto != null) {
cartGoods.setOriginalPrice(checkSpqInfoResponseDto.getPrice()); cartGoods.setOriginalPrice(checkSpqInfoResponseDto.getPrice());
cartGoods.setSpuId(checkSpqInfoResponseDto.getSpuId()); cartGoods.setSpuId(checkSpqInfoResponseDto.getSpuId());
cartGoods.setSkuId(StringUtils.isEmpty(checkSpqInfoResponseDto.getSkuId()) ? checkSpqInfoResponseDto.getSpuId() : checkSpqInfoResponseDto.getSkuId()); cartGoods.setSkuId(StringUtils.isEmpty(checkSpqInfoResponseDto.getSkuId()) ? checkSpqInfoResponseDto.getSpuId() : checkSpqInfoResponseDto.getSkuId());
cartGoods.setQty(1); cartGoods.setQty(cartGoods.getQty());
cartGoods.setCouponCode(checkSpqInfoResponseDto.getCouponCode()); cartGoods.setCouponCode(checkSpqInfoResponseDto.getCouponCode());
cartGoods.setSpuName(checkSpqInfoResponseDto.getSpuName()); cartGoods.setSpuName(checkSpqInfoResponseDto.getSpuName());
cartGoods.setSpecProductId(checkSpqInfoResponseDto.getDefaultSpecId()); cartGoods.setSpecProductId(checkSpqInfoResponseDto.getDefaultSpecId());
...@@ -110,10 +120,10 @@ public class CouponPromotionService implements IPromotionService { ...@@ -110,10 +120,10 @@ public class CouponPromotionService implements IPromotionService {
if (discountGoods != null) { if (discountGoods != null) {
cartGoods.setAmount(discountGoods.getRealAmount()); cartGoods.setAmount(discountGoods.getRealAmount());
} else { } else {
cartGoods.setAmount(checkSpqInfoResponseDto.getPrice()); cartGoods.setAmount(checkSpqInfoResponseDto.getPrice() * cartGoods.getQty());
} }
} }
cartGoods.setOriginalAmount(checkSpqInfoResponseDto.getPrice()); cartGoods.setOriginalAmount(checkSpqInfoResponseDto.getPrice() * cartGoods.getQty());
} }
} }
} }
......
...@@ -425,7 +425,7 @@ public class CouponServiceImpl implements CouponService { ...@@ -425,7 +425,7 @@ public class CouponServiceImpl implements CouponService {
, int isNew , int isNew
, String appId,String menuType) { , String appId,String menuType) {
GetMemberCouponListRequestDto getMemberCouponListRequestDto = new GetMemberCouponListRequestDto(partnerId, userId); GetMemberCouponListRequestDto getMemberCouponListRequestDto = new GetMemberCouponListRequestDto(partnerId, userId);
getMemberCouponListRequestDto.setStatusFlags(Arrays.asList(CouponStatus.STATUS_0.getCode())); getMemberCouponListRequestDto.setStatusFlags(Arrays.asList(CouponStatus.STATUS_0.getCode(), CouponStatus.STATUS_2.getCode()));
getMemberCouponListRequestDto.setPageNum(1); getMemberCouponListRequestDto.setPageNum(1);
getMemberCouponListRequestDto.setPageSize(Integer.MAX_VALUE); getMemberCouponListRequestDto.setPageSize(Integer.MAX_VALUE);
GetMemberCouponListResponseDto.Result result = getMemberCouponList(getMemberCouponListRequestDto); GetMemberCouponListResponseDto.Result result = getMemberCouponList(getMemberCouponListRequestDto);
...@@ -572,6 +572,11 @@ public class CouponServiceImpl implements CouponService { ...@@ -572,6 +572,11 @@ public class CouponServiceImpl implements CouponService {
activityCouponBean.setActivityCode(memberCoupon.getActivityCode()); activityCouponBean.setActivityCode(memberCoupon.getActivityCode());
activityCouponBean.setCouponType(couponStateVo.getType()); activityCouponBean.setCouponType(couponStateVo.getType());
activityCouponBean.setDateDescribe(couponAdapter.getDateDescribe(memberCoupon.getStatus(), memberCoupon.getStartTime(), memberCoupon.getEndTime())); activityCouponBean.setDateDescribe(couponAdapter.getDateDescribe(memberCoupon.getStatus(), memberCoupon.getStartTime(), memberCoupon.getEndTime()));
if (couponStateVo.getDailyAvailableTimes() == null && couponStateVo.getAvailableTimes() != null){
activityCouponBean.setDailyAvailableTimes(couponStateVo.getAvailableTimes());
} else {
activityCouponBean.setDailyAvailableTimes(couponStateVo.getDailyAvailableTimes());
}
// 券状态 0 可用 1 不可用 2 限制可用 // 券状态 0 可用 1 不可用 2 限制可用
if (Objects.equals(activityCouponBean.getCouponCode(), couponCode)) { if (Objects.equals(activityCouponBean.getCouponCode(), couponCode)) {
activityCouponBean.setSelected(YesOrNoEnum.YES.getCode()); activityCouponBean.setSelected(YesOrNoEnum.YES.getCode());
...@@ -582,7 +587,7 @@ public class CouponServiceImpl implements CouponService { ...@@ -582,7 +587,7 @@ public class CouponServiceImpl implements CouponService {
disableCoupons.add(activityCouponBean); disableCoupons.add(activityCouponBean);
disableCouponNum = disableCouponNum + 1; disableCouponNum = disableCouponNum + 1;
} else { } else {
if (Objects.equals(couponStateVo.getState(), CouponStateEnum.STATE_1.getCode())) { if (Objects.equals(couponStateVo.getState(), CouponStateEnum.STATE_1.getCode()) || (activityCouponBean.getDailyAvailableTimes() != null && activityCouponBean.getDailyAvailableTimes() == 0)) {
disableCoupons.add(activityCouponBean); disableCoupons.add(activityCouponBean);
disableCouponNum = disableCouponNum + 1; disableCouponNum = disableCouponNum + 1;
} else { } else {
...@@ -849,7 +854,7 @@ public class CouponServiceImpl implements CouponService { ...@@ -849,7 +854,7 @@ public class CouponServiceImpl implements CouponService {
GetCouponDetailResponseDto.Details couponActivityDetail = null; GetCouponDetailResponseDto.Details couponActivityDetail = null;
for (GetCouponDetailResponseDto.Details detail : couponDetailResponseDto.getDetails()) { for (GetCouponDetailResponseDto.Details detail : couponDetailResponseDto.getDetails()) {
if (productValid) break; if (productValid) break;
if (!CouponStatus.STATUS_0.getCode().equals(detail.getStatus())) continue; if (!CouponStatus.STATUS_0.getCode().equals(detail.getStatus()) && !CouponStatus.STATUS_2.getCode().equals(detail.getStatus())) continue;
for (GetCouponDetailResponseDto.ActiveProduct activeProduct : detail.getActiveProduct()) { for (GetCouponDetailResponseDto.ActiveProduct activeProduct : detail.getActiveProduct()) {
if (goodsId.equals(activeProduct.getProductIdPartner())) { if (goodsId.equals(activeProduct.getProductIdPartner())) {
productValid = true; productValid = true;
......
...@@ -281,22 +281,26 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -281,22 +281,26 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
Integer orderType = addShoppingCartGoodsRequestVo.getOrderType(); Integer orderType = addShoppingCartGoodsRequestVo.getOrderType();
String receiveId = addShoppingCartGoodsRequestVo.getReceiveId(); String receiveId = addShoppingCartGoodsRequestVo.getReceiveId();
String tableNumber = addShoppingCartGoodsRequestVo.getTableNumber(); String tableNumber = addShoppingCartGoodsRequestVo.getTableNumber();
String couponCode = addShoppingCartGoodsRequestVo.getCouponCode(); // 商品券和换购券券号
if (spuId.startsWith(CommonsConstant.COUPON_PREFIX)){ // 兼容老版本
couponCode = spuId.substring(CommonsConstant.COUPON_PREFIX.length());
}
CartGoods cartGoods = ShoppingCartConvertAdapter.convent2CartGoods(addShoppingCartGoodsRequestVo); CartGoods cartGoods = ShoppingCartConvertAdapter.convent2CartGoods(addShoppingCartGoodsRequestVo);
List<Long> productIds = new ArrayList<>(); List<Long> productIds = new ArrayList<>();
//商品skuId或者商品券的商品id //商品skuId或者商品券的商品id
String spuId2 = spuId; String spuId2 = spuId;
CouponProductDto couponProductDto = new CouponProductDto(); CouponProductDto couponProductDto = new CouponProductDto();
if (!spuId.startsWith(CommonsConstant.COUPON_PREFIX)) { 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, spuId, productIds, BusinessTypeEnum.getByType(addShoppingCartGoodsRequestVo.getMenuType()).getCode(), skuId, couponProductDto); spuId2 = validCoupon(partnerId, storeId, couponCode, productIds, BusinessTypeEnum.getByType(addShoppingCartGoodsRequestVo.getMenuType()).getCode(), skuId, couponProductDto);
cartGoods.setGoodsId(spuId); cartGoods.setGoodsId(spuId);
} else { } else {
// 老版本商品券 // 老版本商品券
spuId2 = validCoupon(partnerId, storeId, spuId, productIds, BusinessTypeEnum.getByType(addShoppingCartGoodsRequestVo.getMenuType()).getCode(), couponProductDto); spuId2 = validCoupon(partnerId, storeId, couponCode, productIds, BusinessTypeEnum.getByType(addShoppingCartGoodsRequestVo.getMenuType()).getCode(), couponProductDto);
} }
} }
// 获取商品详细信息 // 获取商品详细信息
...@@ -332,13 +336,13 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -332,13 +336,13 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
queryManyGoodsStocks(addShoppingCartGoodsRequestVo, productIds, productBeanListSpuClass, skuId, checkQty); queryManyGoodsStocks(addShoppingCartGoodsRequestVo, productIds, productBeanListSpuClass, skuId, checkQty);
String productName = null; String productName = null;
// 当添加的商品不是商品券时 // 当添加的商品不是商品券时
if (!spuId.startsWith(CommonsConstant.COUPON_PREFIX)) { if (StringUtils.isBlank(couponCode)) {
//添加非商品券商品 //添加非商品券商品
addNotProductGoods(addShoppingCartGoodsRequestVo, cartGoods, goodsId, userId, shoppingCartGoodsResponseVo, allCartGoodsList); addNotProductGoods(addShoppingCartGoodsRequestVo, cartGoods, goodsId, userId, shoppingCartGoodsResponseVo, allCartGoodsList);
} 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); spuId, allCartGoodsList, productBeanListSpuClass, couponProductDto, couponCode);
} }
Long deliveryAmount = calculateDeliveryAmount(receiveId, partnerId, storeId, userLoginInfoDto.getWxAppid(), shoppingCartGoodsResponseVo,addShoppingCartGoodsRequestVo.getOrderType()); Long deliveryAmount = calculateDeliveryAmount(receiveId, partnerId, storeId, userLoginInfoDto.getWxAppid(), shoppingCartGoodsResponseVo,addShoppingCartGoodsRequestVo.getOrderType());
...@@ -1161,15 +1165,19 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -1161,15 +1165,19 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
CartGoods cartGoods = cartGoodsList.get(i); CartGoods cartGoods = cartGoodsList.get(i);
String cartGoodsUid = cartGoods.getCartGoodsUid(); String cartGoodsUid = cartGoods.getCartGoodsUid();
// 商品不是商品券 // 商品不是商品券
if (!cartGoodsUid.startsWith(CommonsConstant.COUPON_PREFIX)) { if (StringUtils.isBlank(cartGoods.getCouponCode()) && !cartGoodsUid.startsWith(CommonsConstant.COUPON_PREFIX)) {
//this.addCalculationDiscountGoods(calculationDiscountGoodsList, cartGoods.getGoodsId(), cartGoods.getQty(), cartGoods.getFinalPrice(), cartGoods.getMemberDiscount(), cartGoodsUid);
this.addCalculationDiscountGoods(calculationDiscountGoodsList, cartGoods); this.addCalculationDiscountGoods(calculationDiscountGoodsList, cartGoods);
} }
// 商品是商品券 // 商品是商品券
else { else {
// 商品券ID换取商品 // 商品券ID换取商品
String spqId = cartGoods.getCartGoodsUid().substring(CommonsConstant.COUPON_PREFIX.length()); String couponCode = "";
CheckSpqInfoRequestDto checkSpqInfoRequestDto = new CheckSpqInfoRequestDto(partnerId, storeId, spqId, menuType); if (cartGoodsUid.startsWith(CommonsConstant.COUPON_PREFIX)){
couponCode = cartGoods.getCartGoodsUid().substring(CommonsConstant.COUPON_PREFIX.length());
} else {
couponCode = cartGoods.getCouponCode();
}
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())) {
checkSpqInfoResponseDto = couponService.checkSpqInfo(checkSpqInfoRequestDto, cartGoods.getSkuId()); checkSpqInfoResponseDto = couponService.checkSpqInfo(checkSpqInfoRequestDto, cartGoods.getSkuId());
...@@ -1181,7 +1189,11 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -1181,7 +1189,11 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
cartGoodsList.remove(i); cartGoodsList.remove(i);
assortmentSdkService.setShoppingCart(partnerId, storeId, userId, cartGoodsList, null, null, this.shoppingCartBaseService); assortmentSdkService.setShoppingCart(partnerId, storeId, userId, cartGoodsList, null, null, this.shoppingCartBaseService);
} else { } else {
validCouponMap.put(spqId, checkSpqInfoResponseDto); if (cartGoodsUid.startsWith(CommonsConstant.COUPON_PREFIX)){
validCouponMap.put(couponCode, checkSpqInfoResponseDto);
} else {
validCouponMap.put(couponCode + checkSpqInfoResponseDto.getSkuId(), 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());
...@@ -1698,21 +1710,19 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -1698,21 +1710,19 @@ 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) { , List<CartGoods> allCartGoodsList, List<ProductBean> productBeanListSpuClass, CouponProductDto couponProductDto, String couponCode) {
// 商品券商品list
List<CartGoods> tmpCartGoods = allCartGoodsList.parallelStream().filter(k -> k.getCartGoodsUid().startsWith(CommonsConstant.COUPON_PREFIX)).collect(Collectors.toList());
// 当已有商品券时,不得添加(暂时的限制)
if (CollectionUtils.isNotEmpty(tmpCartGoods)) {
setToastMsgIfNotExist(shoppingCartGoodsResponseVo, ShoppingCartConstant.ONE_TRADE_CAN_ONLY_USE_ONE_GOODS_COUPON);
cartGoods.setCartGoodsUid(null);
} else {
cartGoods.setCartGoodsUid(spuId);
// 设置商品类型为商品券 // 设置商品类型为商品券
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 { } else {
cartGoods.setGoodsType(GoodsTypeEnum.COUPON_GOODS.getGoodsType()); cartGoods.setGoodsType(GoodsTypeEnum.COUPON_GOODS.getGoodsType());
} }
if (StringUtils.isBlank(addShoppingCartGoodsRequestVo.getCouponCode())){ //老商品券
cartGoods.setCartGoodsUid(spuId);
} else {
cartGoods.setCouponCode(couponCode);
}
// 商品券Id // 商品券Id
String spqId = spuId.substring(CommonsConstant.COUPON_PREFIX.length()); String spqId = spuId.substring(CommonsConstant.COUPON_PREFIX.length());
cartGoods.setSpuId(spqId); cartGoods.setSpuId(spqId);
...@@ -1748,7 +1758,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -1748,7 +1758,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
LogUtil.info("updateCartGoodsLegal", JSON.toJSONString(cartGoods),JSON.toJSONString(allCartGoodsList)); LogUtil.info("updateCartGoodsLegal", JSON.toJSONString(cartGoods),JSON.toJSONString(allCartGoodsList));
updateCartGoodsLegal(cartGoods, userId, shoppingCartGoodsResponseVo, addShoppingCartGoodsRequestVo, allCartGoodsList); updateCartGoodsLegal(cartGoods, userId, shoppingCartGoodsResponseVo, addShoppingCartGoodsRequestVo, allCartGoodsList);
}
} }
/** /**
......
...@@ -84,12 +84,17 @@ public class CalculationSharingDiscountService { ...@@ -84,12 +84,17 @@ public class CalculationSharingDiscountService {
int cartSize = cartGoodsList.size() - 1; int cartSize = cartGoodsList.size() - 1;
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 (!cartGoods.getCartGoodsUid().startsWith(CommonsConstant.COUPON_PREFIX)) {//非商品券 if (StringUtils.isBlank(cartGoods.getCouponCode()) && !cartGoods.getCartGoodsUid().startsWith(CommonsConstant.COUPON_PREFIX)) {//非商品券
this.setCommonDiscountGoods(calculationDiscountGoodsList,cartGoods); this.setCommonDiscountGoods(calculationDiscountGoodsList,cartGoods);
} }
else {//商品券->商品券ID换取商品 else {//商品券->商品券ID换取商品
String spqId = cartGoods.getCartGoodsUid().substring(CommonsConstant.COUPON_PREFIX.length()); String couponCode = cartGoods.getCouponCode();
CheckSpqInfoRequestDto checkSpqInfoRequestDto = new CheckSpqInfoRequestDto(partnerId, storeId, spqId, menuType); boolean useCoupon = true; // 优惠券放在coupon字段而不是uuid中
if (cartGoods.getCartGoodsUid().startsWith(CommonsConstant.COUPON_PREFIX)){
couponCode = cartGoods.getCartGoodsUid().substring(CommonsConstant.COUPON_PREFIX.length());
useCoupon = false;
}
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())) {
checkSpqInfo = couponService.checkSpqInfo(checkSpqInfoRequestDto, cartGoods.getSkuId()); checkSpqInfo = couponService.checkSpqInfo(checkSpqInfoRequestDto, cartGoods.getSkuId());
...@@ -103,7 +108,11 @@ public class CalculationSharingDiscountService { ...@@ -103,7 +108,11 @@ public class CalculationSharingDiscountService {
assortmentSdkService.setShoppingCart(partnerId, storeId, userId, cartGoodsList, null, null, this.shoppingCartBaseService); assortmentSdkService.setShoppingCart(partnerId, storeId, userId, cartGoodsList, null, null, this.shoppingCartBaseService);
//跑业务异常 商品券不存 //跑业务异常 商品券不存
} else { } else {
validCouponMap.put(spqId, checkSpqInfo); if(useCoupon){
validCouponMap.put(couponCode + checkSpqInfo.getSkuId(), checkSpqInfo);
} else{
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());
...@@ -111,8 +120,10 @@ public class CalculationSharingDiscountService { ...@@ -111,8 +120,10 @@ public class CalculationSharingDiscountService {
coupon.setCode(checkSpqInfo.getCouponCode()); coupon.setCode(checkSpqInfo.getCouponCode());
coupon.setActivityCode(checkSpqInfo.getActiveCode()); coupon.setActivityCode(checkSpqInfo.getActiveCode());
log.info("coupons={},coupon={}", JSON.toJSONString(coupons), JSON.toJSONString(coupon)); log.info("coupons={},coupon={}", JSON.toJSONString(coupons), JSON.toJSONString(coupon));
CalculationSharingDiscountRequestDto.CalculationDiscountCoupon calculationDiscountCoupon = coupons.stream().filter(p -> coupon.getActivityCode().equals(p.getActivityCode()) && coupon.getCode().equals(p.getCode())).findFirst().orElse(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())) { if (GoodsTypeEnum.HG_COUPON_GOODS.getGoodsType().equals(cartGoods.getGoodsType())) {
...@@ -303,7 +314,7 @@ public class CalculationSharingDiscountService { ...@@ -303,7 +314,7 @@ public class CalculationSharingDiscountService {
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.setGoodsQuantity(1); calculationDiscountGoods.setGoodsQuantity(cartGoods.getQty());
calculationDiscountGoods.setOriginalPrice(originalPrice); calculationDiscountGoods.setOriginalPrice(originalPrice);
calculationDiscountGoods.setMemberDiscount(100); calculationDiscountGoods.setMemberDiscount(100);
this.setCalculationDiscountGoods(calculationDiscountGoodsList,calculationDiscountGoods); this.setCalculationDiscountGoods(calculationDiscountGoodsList,calculationDiscountGoods);
...@@ -316,7 +327,7 @@ public class CalculationSharingDiscountService { ...@@ -316,7 +327,7 @@ public class CalculationSharingDiscountService {
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.setGoodsQuantity(1); calculationDiscountGoods.setGoodsQuantity(cartGoods.getQty());
calculationDiscountGoods.setOriginalPrice(originalPrice); calculationDiscountGoods.setOriginalPrice(originalPrice);
calculationDiscountGoods.setMemberDiscount(100); calculationDiscountGoods.setMemberDiscount(100);
calculationDiscountGoods.setCouponCode(couponCode); calculationDiscountGoods.setCouponCode(couponCode);
......
...@@ -45,8 +45,8 @@ public class CouponSharingService { ...@@ -45,8 +45,8 @@ public class CouponSharingService {
,ShoppingCartInfoRequestVo shoppingCartInfoRequestVo) { ,ShoppingCartInfoRequestVo shoppingCartInfoRequestVo) {
// 用户选择了查询优惠券信息 // 用户选择了查询优惠券信息
if (couponPromotionVO != null && ObjectUtils.equals(CouponFlag.YES.getCode(), couponPromotionVO.getFlg())) { if (couponPromotionVO != null && ObjectUtils.equals(CouponFlag.YES.getCode(), couponPromotionVO.getFlg())) {
List<CartGoods> tmpCartGoods = cartGoodsList.parallelStream().filter(k -> k.getCartGoodsUid() List<CartGoods> tmpCartGoods = cartGoodsList.parallelStream().filter(k -> (StringUtils.isNotBlank(k.getCouponCode()) || k.getCartGoodsUid()
.startsWith(CommonsConstant.COUPON_PREFIX)).collect(Collectors.toList()); .startsWith(CommonsConstant.COUPON_PREFIX))).collect(Collectors.toList());
// 是否存在商品券 // 是否存在商品券
boolean hasGoodssCoupon = CollectionUtils.isNotEmpty(tmpCartGoods); boolean hasGoodssCoupon = CollectionUtils.isNotEmpty(tmpCartGoods);
// 构建可用不可用优惠券 // 构建可用不可用优惠券
...@@ -85,17 +85,27 @@ public class CouponSharingService { ...@@ -85,17 +85,27 @@ public class CouponSharingService {
shoppingCartGoodsResponseVo.setCouponDiscount(couponDiscount); shoppingCartGoodsResponseVo.setCouponDiscount(couponDiscount);
//循环购物车商品券 //循环购物车商品券
for (CartGoods cartGoods : cartGoodsList) { for (CartGoods cartGoods : cartGoodsList) {
if (cartGoods.getCartGoodsUid().startsWith(CommonsConstant.COUPON_PREFIX)) { if (StringUtils.isNotBlank(cartGoods.getCouponCode()) || cartGoods.getCartGoodsUid().startsWith(CommonsConstant.COUPON_PREFIX)) {
String spqId = cartGoods.getCartGoodsUid().substring(CommonsConstant.COUPON_PREFIX.length()); String couponCode = cartGoods.getCouponCode();
boolean useCoupon = true; // 优惠券放在coupon字段而不是uuid中
if (cartGoods.getCartGoodsUid().startsWith(CommonsConstant.COUPON_PREFIX)){
couponCode = cartGoods.getCartGoodsUid().substring(CommonsConstant.COUPON_PREFIX.length());
useCoupon = false;
}
// 计算优惠信息时,已将券校验过,放在map中 // 计算优惠信息时,已将券校验过,放在map中
Map<String, CheckSpqInfoResponseDto> validCouponMap = calculationDiscountResult == null ? new HashMap<>() : calculationDiscountResult.getValidCouponMap(); Map<String, CheckSpqInfoResponseDto> validCouponMap = calculationDiscountResult == null ? new HashMap<>() : calculationDiscountResult.getValidCouponMap();
if (MapUtils.isNotEmpty(validCouponMap)) { if (MapUtils.isNotEmpty(validCouponMap)) {
CheckSpqInfoResponseDto checkSpqInfoResponseDto = validCouponMap.get(spqId); CheckSpqInfoResponseDto checkSpqInfoResponseDto;
if(useCoupon){
checkSpqInfoResponseDto = validCouponMap.get(couponCode + cartGoods.getSkuId());
} else{
checkSpqInfoResponseDto = validCouponMap.get(couponCode);
}
if (checkSpqInfoResponseDto != null) { if (checkSpqInfoResponseDto != null) {
cartGoods.setOriginalPrice(checkSpqInfoResponseDto.getPrice()); cartGoods.setOriginalPrice(checkSpqInfoResponseDto.getPrice());
cartGoods.setSpuId(checkSpqInfoResponseDto.getSpuId()); cartGoods.setSpuId(checkSpqInfoResponseDto.getSpuId());
cartGoods.setSkuId(StringUtils.isEmpty(checkSpqInfoResponseDto.getSkuId()) ? checkSpqInfoResponseDto.getSpuId() : checkSpqInfoResponseDto.getSkuId()); cartGoods.setSkuId(StringUtils.isEmpty(checkSpqInfoResponseDto.getSkuId()) ? checkSpqInfoResponseDto.getSpuId() : checkSpqInfoResponseDto.getSkuId());
cartGoods.setQty(1); cartGoods.setQty(cartGoods.getQty());
cartGoods.setCouponCode(checkSpqInfoResponseDto.getCouponCode()); cartGoods.setCouponCode(checkSpqInfoResponseDto.getCouponCode());
cartGoods.setSpuName(checkSpqInfoResponseDto.getSpuName()); cartGoods.setSpuName(checkSpqInfoResponseDto.getSpuName());
cartGoods.setSpecProductId(checkSpqInfoResponseDto.getDefaultSpecId()); cartGoods.setSpecProductId(checkSpqInfoResponseDto.getDefaultSpecId());
...@@ -110,10 +120,10 @@ public class CouponSharingService { ...@@ -110,10 +120,10 @@ public class CouponSharingService {
if (discountGoods != null) { if (discountGoods != null) {
cartGoods.setAmount(discountGoods.getRealAmount()); cartGoods.setAmount(discountGoods.getRealAmount());
} else { } else {
cartGoods.setAmount(checkSpqInfoResponseDto.getPrice()); cartGoods.setAmount(checkSpqInfoResponseDto.getPrice() * cartGoods.getQty());
} }
} }
cartGoods.setOriginalAmount(checkSpqInfoResponseDto.getPrice()); cartGoods.setOriginalAmount(checkSpqInfoResponseDto.getPrice() * cartGoods.getQty());
} }
} }
} }
...@@ -128,17 +138,27 @@ public class CouponSharingService { ...@@ -128,17 +138,27 @@ public class CouponSharingService {
} }
//循环购物车商品券 //循环购物车商品券
for (CartGoods cartGoods : cartGoodsList) { for (CartGoods cartGoods : cartGoodsList) {
if (cartGoods.getCartGoodsUid().startsWith(CommonsConstant.COUPON_PREFIX)) { if (StringUtils.isNotBlank(cartGoods.getCouponCode()) || cartGoods.getCartGoodsUid().startsWith(CommonsConstant.COUPON_PREFIX)) {
String spqId = cartGoods.getCartGoodsUid().substring(CommonsConstant.COUPON_PREFIX.length()); String couponCode = cartGoods.getCouponCode();
boolean useCoupon = true; // 优惠券放在coupon字段而不是uuid中
if (cartGoods.getCartGoodsUid().startsWith(CommonsConstant.COUPON_PREFIX)){
couponCode = cartGoods.getCartGoodsUid().substring(CommonsConstant.COUPON_PREFIX.length());
useCoupon = false;
}
// 计算优惠信息时,已将券校验过,放在map中 // 计算优惠信息时,已将券校验过,放在map中
Map<String, CheckSpqInfoResponseDto> validCouponMap = discountResult == null ? new HashMap<>() : discountResult.getValidCouponMap(); Map<String, CheckSpqInfoResponseDto> validCouponMap = discountResult == null ? new HashMap<>() : discountResult.getValidCouponMap();
if (MapUtils.isNotEmpty(validCouponMap)) { if (MapUtils.isNotEmpty(validCouponMap)) {
CheckSpqInfoResponseDto checkSpqInfoResponseDto = validCouponMap.get(spqId); CheckSpqInfoResponseDto checkSpqInfoResponseDto;
if(useCoupon){
checkSpqInfoResponseDto = validCouponMap.get(couponCode + cartGoods.getSkuId());
} else{
checkSpqInfoResponseDto = validCouponMap.get(couponCode);
}
if (checkSpqInfoResponseDto != null) { if (checkSpqInfoResponseDto != null) {
cartGoods.setOriginalPrice(checkSpqInfoResponseDto.getPrice()); cartGoods.setOriginalPrice(checkSpqInfoResponseDto.getPrice());
cartGoods.setSpuId(checkSpqInfoResponseDto.getSpuId()); cartGoods.setSpuId(checkSpqInfoResponseDto.getSpuId());
cartGoods.setSkuId(StringUtils.isEmpty(checkSpqInfoResponseDto.getSkuId()) ? checkSpqInfoResponseDto.getSpuId() : checkSpqInfoResponseDto.getSkuId()); cartGoods.setSkuId(StringUtils.isEmpty(checkSpqInfoResponseDto.getSkuId()) ? checkSpqInfoResponseDto.getSpuId() : checkSpqInfoResponseDto.getSkuId());
cartGoods.setQty(1); cartGoods.setQty(cartGoods.getQty());
cartGoods.setCouponCode(checkSpqInfoResponseDto.getCouponCode()); cartGoods.setCouponCode(checkSpqInfoResponseDto.getCouponCode());
cartGoods.setSpuName(checkSpqInfoResponseDto.getSpuName()); cartGoods.setSpuName(checkSpqInfoResponseDto.getSpuName());
cartGoods.setSpecProductId(checkSpqInfoResponseDto.getDefaultSpecId()); cartGoods.setSpecProductId(checkSpqInfoResponseDto.getDefaultSpecId());
......
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