Commit a1fc6164 by 周晓航

退回代码

Signed-off-by: 周晓航 <xiaohang.zhou@freemud.com>
parent 8e42df6d
package cn.freemud.handle;
import cn.freemud.entities.dto.CheckSpqInfoResponseDto;
import cn.freemud.entities.dto.calculate.CalculationDiscountResult;
import cn.freemud.entities.dto.calculate.Discount;
import cn.freemud.entities.dto.calculate.Goods;
import cn.freemud.entities.vo.CartGoods;
import cn.freemud.entities.vo.ShoppingCartInfoRequestVo;
import cn.freemud.entities.vo.SubtractStockVO;
import cn.freemud.enums.ActivityTypeEnum;
import cn.freemud.enums.GoodsTypeEnum;
import com.freemud.sdk.api.assortment.shoppingcart.constant.CommonsConstant;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Component;
import java.util.HashMap;
......@@ -25,7 +17,7 @@ import java.util.stream.Collectors;
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/11/18 下午2:42
* @description : 一点点挪动相同代码 解决代码冗余
* @description :
*/
@Component
public class PromotionCommonMethodHandle {
......@@ -71,72 +63,4 @@ public class PromotionCommonMethodHandle {
}
return stocks;
}
/**
* 新老算价 提取公共代码
*
* @param cartGoodsList
* @param calculationDiscountResult
*/
public void cartGoodsSetAttributeCommon(List<CartGoods> cartGoodsList,
CalculationDiscountResult calculationDiscountResult) {
Map<String, CheckSpqInfoResponseDto> validCouponMap = calculationDiscountResult == null ? new HashMap<>() : calculationDiscountResult.getValidCouponMap();
for (CartGoods cartGoods : cartGoodsList) {
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;
}
List<CartGoods.CartGoodsExtra> extra = cartGoods.getExtra();
// fisherman bug修复,买m赠n券商品属性未展示问题
if (CollectionUtils.isNotEmpty(extra)) {
List<String> specIdList = extra.stream().map(CartGoods.CartGoodsExtra::getAttributeId).collect(Collectors.toList());
List<String> specNameList = extra.stream().map(CartGoods.CartGoodsExtra::getAttributeName).collect(Collectors.toList());
cartGoods.setSpecProductId(StringUtils.join(specIdList, "/"));
cartGoods.setSubName(StringUtils.join(specNameList, "/"));
}
if (StringUtils.isNotBlank(couponCode)) {
// 计算优惠信息时,已将券校验过,放在map中
if (MapUtils.isNotEmpty(validCouponMap)) {
CheckSpqInfoResponseDto checkSpqInfoResponseDto = null;
if (useCoupon) {
checkSpqInfoResponseDto = validCouponMap.get(couponCode + cartGoods.getSkuId());
} else {
checkSpqInfoResponseDto = validCouponMap.get(couponCode);
}
if (checkSpqInfoResponseDto != null) {
cartGoods.setOriginalPrice(checkSpqInfoResponseDto.getPrice());
cartGoods.setSpuId(checkSpqInfoResponseDto.getSpuId());
cartGoods.setSkuId(StringUtils.isEmpty(checkSpqInfoResponseDto.getSkuId()) ? checkSpqInfoResponseDto.getSpuId() : checkSpqInfoResponseDto.getSkuId());
cartGoods.setQty(cartGoods.getQty());
cartGoods.setCouponCode(checkSpqInfoResponseDto.getCouponCode());
cartGoods.setSpuName(checkSpqInfoResponseDto.getSpuName());
cartGoods.setSpecProductId(checkSpqInfoResponseDto.getDefaultSpecId());
cartGoods.setSubName(checkSpqInfoResponseDto.getDefaultSpecName());
cartGoods.setExtra(checkSpqInfoResponseDto.getExtras());
if (GoodsTypeEnum.HG_COUPON_GOODS.getGoodsType().equals(cartGoods.getGoodsType())) {
Goods discountGoods = null;
if (CollectionUtils.isNotEmpty(calculationDiscountResult.getGoods())) {
discountGoods = calculationDiscountResult.getGoods()
.stream()
.filter(d -> cartGoods.getCartGoodsUid().equals(d.getCartGoodsUid()))
.findFirst()
.orElse(null);
}
if (discountGoods != null) {
cartGoods.setAmount(discountGoods.getRealAmount());
} else {
cartGoods.setAmount(checkSpqInfoResponseDto.getPrice() * cartGoods.getQty());
}
}
cartGoods.setOriginalAmount(checkSpqInfoResponseDto.getPrice() * cartGoods.getQty());
}
}
}
}
}
}
......@@ -9,7 +9,7 @@ import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.vo.*;
import cn.freemud.enums.ActivityTypeEnum;
import cn.freemud.enums.AvailableCouponQueryFlagEnum;
import cn.freemud.handle.PromotionCommonMethodHandle;
import cn.freemud.enums.GoodsTypeEnum;
import cn.freemud.service.CouponService;
import cn.freemud.service.IPromotionService;
import com.freemud.sdk.api.assortment.shoppingcart.constant.CommonsConstant;
......@@ -49,9 +49,6 @@ public class CouponPromotionService implements IPromotionService {
@Autowired
private ShoppingCartBaseServiceImpl shoppingCartBaseService;
@Autowired
private PromotionCommonMethodHandle promotionCommonMethodHandle;
@Override
public void updateShoppingCartGoodsDiscount(CouponPromotionVO couponPromotionVO, ActivityQueryDto activityQueryDto,
CalculationDiscountResult calculationDiscountResult, List<CartGoods> cartGoodsList,
......@@ -147,15 +144,71 @@ public class CouponPromotionService implements IPromotionService {
}
}
if (Objects.isNull(couponPromotionVO)) {
//循环购物车商品券
for (CartGoods cartGoods : cartGoodsList) {
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;
}
if (StringUtils.isNotBlank(couponCode)) {
List<String> validCouponCodeLis = new ArrayList<>();
if (couponPromotionVO != null && !ObjectUtils.equals(AvailableCouponQueryFlagEnum.NO.getCode(), couponPromotionVO.getAvailableCouponQueryFlag())){
validCouponCodeLis = shoppingCartGoodsResponseVo.getAvailableCoupon().getUsableCoupons().stream().map(ActivityCouponBean::getCouponCode).collect(Collectors.toList());
} else {
couponPromotionVO = new CouponPromotionVO();
couponPromotionVO.setUserId(userLoginInfoDto.getMemberId());
couponPromotionVO.setStoreId(activityQueryDto.getStoreId());
couponPromotionVO.setPartnerId(activityQueryDto.getPartnerId());
couponPromotionVO.setOrderType(activityQueryDto.getOrderType());
}
// 新老算价 提取公共代码
promotionCommonMethodHandle.cartGoodsSetAttributeCommon(cartGoodsList, calculationDiscountResult);
// couponService.checkValidCoupon(couponPromotionVO, validCouponCodeLis, spqIdToCartUuid, couponCode, cartGoodsList);
// 计算优惠信息时,已将券校验过,放在map中
if (MapUtils.isNotEmpty(validCouponMap)) {
CheckSpqInfoResponseDto checkSpqInfoResponseDto = null;
if(useCoupon){
checkSpqInfoResponseDto = validCouponMap.get(couponCode + cartGoods.getSkuId());
} else{
checkSpqInfoResponseDto = validCouponMap.get(couponCode);
}
if (checkSpqInfoResponseDto != null) {
cartGoods.setOriginalPrice(checkSpqInfoResponseDto.getPrice());
cartGoods.setSpuId(checkSpqInfoResponseDto.getSpuId());
cartGoods.setSkuId(StringUtils.isEmpty(checkSpqInfoResponseDto.getSkuId()) ? checkSpqInfoResponseDto.getSpuId() : checkSpqInfoResponseDto.getSkuId());
cartGoods.setQty(cartGoods.getQty());
cartGoods.setCouponCode(checkSpqInfoResponseDto.getCouponCode());
cartGoods.setSpuName(checkSpqInfoResponseDto.getSpuName());
List<CartGoods.CartGoodsExtra> extra = cartGoods.getExtra();
if (CollectionUtils.isNotEmpty(extra)){
List<String> specIdList = extra.stream().map(CartGoods.CartGoodsExtra::getAttributeId).collect(Collectors.toList());
List<String> specNameList = extra.stream().map(CartGoods.CartGoodsExtra::getAttributeName).collect(Collectors.toList());
cartGoods.setSpecProductId(StringUtils.join(specIdList, "/"));
cartGoods.setSubName(StringUtils.join(specNameList, "/"));
} else {
cartGoods.setSpecProductId(checkSpqInfoResponseDto.getDefaultSpecId());
cartGoods.setSubName(checkSpqInfoResponseDto.getDefaultSpecName());
cartGoods.setExtra(checkSpqInfoResponseDto.getExtras());
}
if (GoodsTypeEnum.HG_COUPON_GOODS.getGoodsType().equals(cartGoods.getGoodsType())) {
Goods discountGoods = calculationDiscountResult.getGoods()
.stream()
.filter(d -> cartGoods.getCartGoodsUid().equals(d.getCartGoodsUid()))
.findFirst()
.orElse(null);
if (discountGoods != null) {
cartGoods.setAmount(discountGoods.getRealAmount());
} else {
cartGoods.setAmount(checkSpqInfoResponseDto.getPrice() * cartGoods.getQty());
}
}
cartGoods.setOriginalAmount(checkSpqInfoResponseDto.getPrice() * cartGoods.getQty());
}
}
}
}
}
......
......@@ -8,11 +8,12 @@ import cn.freemud.entities.vo.*;
import cn.freemud.enums.ActivityTypeEnum;
import cn.freemud.enums.AvailableCouponQueryFlagEnum;
import cn.freemud.enums.GoodsTypeEnum;
import cn.freemud.handle.PromotionCommonMethodHandle;
import cn.freemud.service.CouponService;
import cn.freemud.service.impl.AssortmentSdkService;
import com.alibaba.fastjson.JSON;
import com.freemud.sdk.api.assortment.shoppingcart.constant.CommonsConstant;
import com.freemud.sdk.api.assortment.shoppingcart.service.impl.ShoppingCartBaseServiceImpl;
import com.freemud.sdk.api.assortment.shoppingcart.util.ShoppingSdkLogUtil;
import com.google.common.collect.Lists;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
......@@ -46,8 +47,6 @@ public class CouponSharingService {
@Autowired
private ShoppingCartBaseServiceImpl shoppingCartBaseService;
@Autowired
private PromotionCommonMethodHandle promotionCommonMethodHandle;
public void updateShoppingCartGoodsDiscount(CalculationDiscountResult calculationDiscountResult
, List<CartGoods> cartGoodsList
......@@ -134,17 +133,72 @@ public class CouponSharingService {
}
}
}
if (Objects.isNull(couponPromotionVO)) {
//循环购物车商品券
for (CartGoods cartGoods : cartGoodsList) {
if (StringUtils.isNotBlank(cartGoods.getCouponCode()) || cartGoods.getCartGoodsUid().startsWith(CommonsConstant.COUPON_PREFIX)) {
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;
}
List<String> validCouponCodeLis = new ArrayList<>();
if (couponPromotionVO != null && !ObjectUtils.equals(AvailableCouponQueryFlagEnum.NO.getCode(), couponPromotionVO.getAvailableCouponQueryFlag())){
validCouponCodeLis = shoppingCartGoodsResponseVo.getAvailableCoupon().getUsableCoupons().stream().map(ActivityCouponBean::getCouponCode).collect(Collectors.toList());
} else {
couponPromotionVO = new CouponPromotionVO();
couponPromotionVO.setUserId(userId);
couponPromotionVO.setStoreId(storeId);
couponPromotionVO.setPartnerId(partnerId);
couponPromotionVO.setOrderType(orderType);
}
// 新老算价 提取公共代码
promotionCommonMethodHandle.cartGoodsSetAttributeCommon(cartGoodsList, calculationDiscountResult);
// couponService.checkValidCoupon(couponPromotionVO, validCouponCodeLis, spqIdToCartUuid, couponCode, cartGoodsList);
// 计算优惠信息时,已将券校验过,放在map中
if (MapUtils.isNotEmpty(validCouponMap)) {
CheckSpqInfoResponseDto checkSpqInfoResponseDto;
if(useCoupon){
checkSpqInfoResponseDto = validCouponMap.get(couponCode + cartGoods.getSkuId());
} else{
checkSpqInfoResponseDto = validCouponMap.get(couponCode);
}
if (checkSpqInfoResponseDto != null) {
cartGoods.setOriginalPrice(checkSpqInfoResponseDto.getPrice());
cartGoods.setSpuId(checkSpqInfoResponseDto.getSpuId());
cartGoods.setSkuId(StringUtils.isEmpty(checkSpqInfoResponseDto.getSkuId()) ? checkSpqInfoResponseDto.getSpuId() : checkSpqInfoResponseDto.getSkuId());
cartGoods.setQty(cartGoods.getQty());
cartGoods.setCouponCode(checkSpqInfoResponseDto.getCouponCode());
cartGoods.setSpuName(checkSpqInfoResponseDto.getSpuName());
List<CartGoods.CartGoodsExtra> extra = cartGoods.getExtra();
if (CollectionUtils.isNotEmpty(extra)){
List<String> specIdList = extra.stream().map(CartGoods.CartGoodsExtra::getAttributeId).collect(Collectors.toList());
List<String> specNameList = extra.stream().map(CartGoods.CartGoodsExtra::getAttributeName).collect(Collectors.toList());
List<String> foreignSpecNameList = extra.stream().map(CartGoods.CartGoodsExtra::getAttributeForeignName).collect(Collectors.toList());
cartGoods.setSpecProductId(StringUtils.join(specIdList, "/"));
cartGoods.setSubName(StringUtils.join(specNameList, "/"));
cartGoods.setSubForeignName(StringUtils.join(foreignSpecNameList, "/"));
} else {
cartGoods.setSpecProductId(checkSpqInfoResponseDto.getDefaultSpecId());
cartGoods.setSubName(checkSpqInfoResponseDto.getDefaultSpecName());
}
cartGoods.setExtra(checkSpqInfoResponseDto.getExtras());
if (GoodsTypeEnum.HG_COUPON_GOODS.getGoodsType().equals(cartGoods.getGoodsType())) {
Goods discountGoods = calculationDiscountResult.getGoods()
.stream()
.filter(d -> cartGoods.getCartGoodsUid().equals(d.getCartGoodsUid()))
.findFirst()
.orElse(null);
if (discountGoods != null) {
cartGoods.setAmount(discountGoods.getRealAmount());
} else {
cartGoods.setAmount(checkSpqInfoResponseDto.getPrice() * cartGoods.getQty());
}
}
cartGoods.setOriginalAmount(checkSpqInfoResponseDto.getPrice() * cartGoods.getQty());
}
}
}
}
}
public void equally(CalculationDiscountResult discountResult
......
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