Commit 0d8a061b by xiaoer.li@freemud.com

Merge branch 'feature/促销算价基于最新master的分支' of…

Merge branch 'feature/促销算价基于最新master的分支' of http://gitlab.freemud.com/order-group-application/order-group into feature/促销算价基于最新master的分支
parents 0823f3e7 b6a980ca
...@@ -114,6 +114,7 @@ public class CalculationSharingDiscountRequestDto { ...@@ -114,6 +114,7 @@ public class CalculationSharingDiscountRequestDto {
* 例如8折为80 * 例如8折为80
*/ */
private Integer memberDiscount; private Integer memberDiscount;
private String couponCode;
/** /**
* 加料 * 加料
*/ */
......
...@@ -160,7 +160,10 @@ public class SetMealServiceImpl implements IPromotionService { ...@@ -160,7 +160,10 @@ public class SetMealServiceImpl implements IPromotionService {
return number - cartGoods.getQty() < 0 ? "该商品限" + number + "份优惠 超出按照原价计算哦" : ""; return number - cartGoods.getQty() < 0 ? "该商品限" + number + "份优惠 超出按照原价计算哦" : "";
} else { } else {
cartGoods.setAmount((cartGoods.getFinalPrice() + productGroupAmount) * cartGoods.getQty()); cartGoods.setAmount((cartGoods.getFinalPrice() + productGroupAmount) * cartGoods.getQty());
return "该商品限" + goodsMap.get(cartGoods.getGoodsId()).getDiscounts().get(0).getActualGoodsNumber() + "份优惠 超出按照原价计算哦"; if (CollectionUtils.isNotEmpty(goodsMap.get(cartGoods.getGoodsId()).getDiscounts())) {
return "该商品限" + goodsMap.get(cartGoods.getGoodsId()).getDiscounts().get(0).getActualGoodsNumber() + "份优惠 超出按照原价计算哦";
}
return "";
} }
} }
} }
...@@ -390,21 +390,31 @@ public class CalculationCommonService { ...@@ -390,21 +390,31 @@ public class CalculationCommonService {
* 固定搭配 * 固定搭配
* productComboList * productComboList
*/ */
Long originalPriceSum = 0L;
List<ShoppingCartGoodsDto.CartGoodsDetailDto> combs = new ArrayList<>(); List<ShoppingCartGoodsDto.CartGoodsDetailDto> combs = new ArrayList<>();
if (CollectionUtils.isNotEmpty(cartGoods.getProductComboList())) { if (CollectionUtils.isNotEmpty(cartGoods.getProductComboList())) {
HashMap<String, BlockRow> gxDiscount = this.drawnSmallAndGroupRow(calculationGoods, 2, true); HashMap<String, BlockRow> gxDiscount = this.drawnSmallAndGroupRow(calculationGoods, 2, true);
List<ShoppingCartGoodsDto.CartGoodsDetailDto> comboLists = this.com2DetailGoods(gxDiscount, cartGoods.getProductComboList(), cartGoods, true); List<ShoppingCartGoodsDto.CartGoodsDetailDto> comboLists = this.com2DetailGoods(gxDiscount, cartGoods.getProductComboList(), cartGoods, true);
combs.addAll(comboLists); combs.addAll(comboLists);
cartGoodsDetailDto.setProductType(ProductType.SETMEAL.getCode()); cartGoodsDetailDto.setProductType(ProductType.SETMEAL.getCode());
originalPriceSum = comboLists.stream().mapToLong(ShoppingCartGoodsDto.CartGoodsDetailDto::getOriginalPrice).sum();
cartGoodsDetailDto.setOriginalPrice(originalPriceSum);
} }
/** /**
* 可选商品 * 可选商品
* productGroupList * productGroupList
*/ */
if (CollectionUtils.isNotEmpty(cartGoods.getProductGroupList())) { if (CollectionUtils.isNotEmpty(cartGoods.getProductGroupList())) {
HashMap<String, BlockRow> smDiscount = this.drawnSmallAndGroupRow(calculationGoods, 2, true); HashMap<String, BlockRow> smDiscount = this.drawnSmallAndGroupRow(calculationGoods, 2, false);
List<ShoppingCartGoodsDto.CartGoodsDetailDto> groupList = this.com2DetailGoods(smDiscount, cartGoods.getProductGroupList(), cartGoods, false); List<ShoppingCartGoodsDto.CartGoodsDetailDto> groupList = this.com2DetailGoods(smDiscount, cartGoods.getProductGroupList(), cartGoods, false);
combs.addAll(groupList); combs.addAll(groupList);
int discountSum = groupList.stream().mapToInt(ShoppingCartGoodsDto.CartGoodsDetailDto::getTotalDiscountAmount).sum();
cartGoodsDetailDto.setTotalDiscountAmount(cartGoodsDetailDto.getTotalDiscountAmount()+discountSum);
for (ShoppingCartGoodsDto.CartGoodsDetailDto goodsDetailDto : groupList) {
originalPriceSum += goodsDetailDto.getOriginalPrice()*goodsDetailDto.getQty();
}
//originalPriceSum = groupList.stream().mapToLong(ShoppingCartGoodsDto.CartGoodsDetailDto::getOriginalPrice).sum();
cartGoodsDetailDto.setOriginalPrice(cartGoodsDetailDto.getOriginalPrice()+originalPriceSum);
} }
cartGoodsDetailDto.setComboProducts(combs); cartGoodsDetailDto.setComboProducts(combs);
List<ShoppingCartGoodsDto.CartGoodsDetailDto.CartGoodsExtra> cartGoodsExtras = BeanUtil.convertBeans(cartGoods.getExtra(), ShoppingCartGoodsDto.CartGoodsDetailDto.CartGoodsExtra::new); List<ShoppingCartGoodsDto.CartGoodsDetailDto.CartGoodsExtra> cartGoodsExtras = BeanUtil.convertBeans(cartGoods.getExtra(), ShoppingCartGoodsDto.CartGoodsDetailDto.CartGoodsExtra::new);
...@@ -441,7 +451,7 @@ public class CalculationCommonService { ...@@ -441,7 +451,7 @@ public class CalculationCommonService {
com.setUnit(comb.getUnit()); com.setUnit(comb.getUnit());
List<ShoppingCartGoodsDto.CartGoodsDetailDto.CartGoodsExtra> cartGoodsExtras = BeanUtil.convertBeans(comb.getExtra(), ShoppingCartGoodsDto.CartGoodsDetailDto.CartGoodsExtra::new); List<ShoppingCartGoodsDto.CartGoodsDetailDto.CartGoodsExtra> cartGoodsExtras = BeanUtil.convertBeans(comb.getExtra(), ShoppingCartGoodsDto.CartGoodsDetailDto.CartGoodsExtra::new);
com.setExtraList(cartGoodsExtras); com.setExtraList(cartGoodsExtras);
com.setOriginalPrice(comb.getOriginalPrice()); com.setOriginalPrice(comb.getFinalPrice());
//todo //todo
BlockRow row = discount.get(comb.getGoodsId()); BlockRow row = discount.get(comb.getGoodsId());
if (row == null) { if (row == null) {
......
...@@ -8,8 +8,8 @@ import cn.freemud.entities.dto.calculate.CalculationSharingDiscountResponseDto; ...@@ -8,8 +8,8 @@ import cn.freemud.entities.dto.calculate.CalculationSharingDiscountResponseDto;
import cn.freemud.entities.vo.CartGoods; import cn.freemud.entities.vo.CartGoods;
import cn.freemud.entities.vo.ShoppingCartInfoRequestVo; import cn.freemud.entities.vo.ShoppingCartInfoRequestVo;
import cn.freemud.enums.ActivityChannelEnum; import cn.freemud.enums.ActivityChannelEnum;
import cn.freemud.enums.GoodsTypeEnum;
import cn.freemud.enums.ResponseResult; import cn.freemud.enums.ResponseResult;
import cn.freemud.interceptor.BizServiceException;
import cn.freemud.interceptor.ServiceException; import cn.freemud.interceptor.ServiceException;
import cn.freemud.service.CommonService; import cn.freemud.service.CommonService;
import cn.freemud.service.CouponService; import cn.freemud.service.CouponService;
...@@ -85,7 +85,11 @@ public class CalculationSharingDiscountService { ...@@ -85,7 +85,11 @@ public class CalculationSharingDiscountService {
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);
//跑业务异常 商品券不存 //跑业务异常 商品券不存
throw new ServiceException(ResponseResult.SHOPPING_CART_COUPON_NOT_EXIST); if (GoodsTypeEnum.HG_COUPON_GOODS.getGoodsType().equals(cartGoods.getGoodsType())) {
throw new ServiceException(ResponseResult.SHOPPING_CART_HG_COUPON_NOT_EXIST);
} else {
throw new ServiceException(ResponseResult.SHOPPING_CART_COUPON_NOT_EXIST);
}
} }
validCouponMap.put(spqId,checkSpqInfo); validCouponMap.put(spqId,checkSpqInfo);
cartGoods.setName(checkSpqInfo.getCouponName()); cartGoods.setName(checkSpqInfo.getCouponName());
...@@ -98,7 +102,12 @@ public class CalculationSharingDiscountService { ...@@ -98,7 +102,12 @@ public class CalculationSharingDiscountService {
// 添加商品券代表的商品放入促销 // 添加商品券代表的商品放入促销
String goodsId = StringUtils.isNotBlank(checkSpqInfo.getSkuId()) ? checkSpqInfo.getSkuId(): checkSpqInfo.getSpuId(); String goodsId = StringUtils.isNotBlank(checkSpqInfo.getSkuId()) ? checkSpqInfo.getSkuId(): checkSpqInfo.getSpuId();
this.setSpqDiscountGoods(calculationDiscountGoodsList,cartGoods,goodsId,checkSpqInfo.getPrice());
if (GoodsTypeEnum.HG_COUPON_GOODS.getGoodsType().equals(cartGoods.getGoodsType())) {
this.setSpqDiscountGoods(calculationDiscountGoodsList,cartGoods,goodsId,checkSpqInfo.getPrice(),cartGoods.getSpuId());
} else {
this.setSpqDiscountGoods(calculationDiscountGoodsList,cartGoods,goodsId,checkSpqInfo.getPrice());
}
} }
} }
...@@ -238,6 +247,20 @@ public class CalculationSharingDiscountService { ...@@ -238,6 +247,20 @@ public class CalculationSharingDiscountService {
calculationDiscountGoods.setMemberDiscount(100); calculationDiscountGoods.setMemberDiscount(100);
this.setCalculationDiscountGoods(calculationDiscountGoodsList,calculationDiscountGoods); this.setCalculationDiscountGoods(calculationDiscountGoodsList,calculationDiscountGoods);
} }
private void setSpqDiscountGoods(List<CalculationSharingDiscountRequestDto.CalculationDiscountGoods> calculationDiscountGoodsList
, CartGoods cartGoods
, String goodsId
, Long originalPrice
,String couponCode) {
CalculationSharingDiscountRequestDto.CalculationDiscountGoods calculationDiscountGoods = new CalculationSharingDiscountRequestDto.CalculationDiscountGoods();
calculationDiscountGoods.setGoodsId(goodsId);
calculationDiscountGoods.setCartGoodsUid(cartGoods.getCartGoodsUid());
calculationDiscountGoods.setGoodsQuantity(1);
calculationDiscountGoods.setOriginalPrice(originalPrice);
calculationDiscountGoods.setMemberDiscount(100);
calculationDiscountGoods.setCouponCode(couponCode);
this.setCalculationDiscountGoods(calculationDiscountGoodsList,calculationDiscountGoods);
}
/** /**
* 需要促销计算的商品 * 需要促销计算的商品
......
...@@ -165,7 +165,7 @@ public class CalculationSharingEquallyService { ...@@ -165,7 +165,7 @@ public class CalculationSharingEquallyService {
ActivityDiscountsDto activityDiscountsDto = new ActivityDiscountsDto(); ActivityDiscountsDto activityDiscountsDto = new ActivityDiscountsDto();
activityDiscountsDto.setActivityCode(discount.getActivityCode()); activityDiscountsDto.setActivityCode(discount.getActivityCode());
activityDiscountsDto.setActivityName(discount.getActivityName()); activityDiscountsDto.setActivityName(discount.getActivityName());
activityDiscountsDto.setActivityType(discountType); activityDiscountsDto.setActivityType(calculationCommonService.convertType(discountType));
activityDiscountsDto.setDiscountAmount(0 - discountAmount); activityDiscountsDto.setDiscountAmount(0 - discountAmount);
activityDiscountsDtos.add(activityDiscountsDto); activityDiscountsDtos.add(activityDiscountsDto);
} }
......
...@@ -236,13 +236,13 @@ public class AdditionSharingService { ...@@ -236,13 +236,13 @@ public class AdditionSharingService {
if (discountResult == null || CollectionUtils.isEmpty(discountResult.getGoods()) || premiumExchangeActivity == null || CollectionUtils.isEmpty(premiumExchangeActivity.getProducts())) { if (discountResult == null || CollectionUtils.isEmpty(discountResult.getGoods()) || premiumExchangeActivity == null || CollectionUtils.isEmpty(premiumExchangeActivity.getProducts())) {
return; return;
} }
CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods hgGood = discountResult.getGoods() List<CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods> manyHgs = discountResult.getGoods()
.stream() .stream()
.filter(d -> CalculationGoodsType.TYPE_2.getType().equals(d.getCartGoodType())) .filter(d -> CalculationGoodsType.TYPE_2.getType().equals(d.getCartGoodType()))
.findFirst() .collect(Collectors.toList());
.orElse(null);
if (hgGood == null) { if (CollectionUtils.isEmpty(manyHgs)) {
throw new ServiceException(ResponseResult.PREMIUM_EXCHANGE_ACTIVITY_NOT_EXIST); throw new ServiceException(ResponseResult.PREMIUM_EXCHANGE_ACTIVITY_NOT_EXIST);
} }
...@@ -265,6 +265,10 @@ public class AdditionSharingService { ...@@ -265,6 +265,10 @@ public class AdditionSharingService {
if (null == getProductsVo) { if (null == getProductsVo) {
continue; continue;
} }
CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods hgGood = manyHgs.stream().filter(d -> goodsId.equals(d.getGoodsId())).findFirst().orElse(null);
if (hgGood==null) {
continue;
}
ShoppingCartGoodsDto.CartGoodsDetailDto cartGoodsDetailDto = this.getCartGoodsDetailDto(product, getProductsVo, goodsId, hgGood); ShoppingCartGoodsDto.CartGoodsDetailDto cartGoodsDetailDto = this.getCartGoodsDetailDto(product, getProductsVo, goodsId, hgGood);
shoppingCartGoodsDto.getProducts().add(cartGoodsDetailDto); shoppingCartGoodsDto.getProducts().add(cartGoodsDetailDto);
//2.计算优惠价格 //2.计算优惠价格
......
...@@ -7,6 +7,7 @@ import cn.freemud.entities.dto.calculate.CalculationSharingDiscountResponseDto; ...@@ -7,6 +7,7 @@ import cn.freemud.entities.dto.calculate.CalculationSharingDiscountResponseDto;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto; import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.vo.*; import cn.freemud.entities.vo.*;
import cn.freemud.enums.CouponFlag; import cn.freemud.enums.CouponFlag;
import cn.freemud.enums.GoodsTypeEnum;
import cn.freemud.service.CouponService; import cn.freemud.service.CouponService;
import com.freemud.sdk.api.assortment.shoppingcart.constant.CommonsConstant; import com.freemud.sdk.api.assortment.shoppingcart.constant.CommonsConstant;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
...@@ -93,6 +94,22 @@ public class CouponSharingService { ...@@ -93,6 +94,22 @@ public class CouponSharingService {
cartGoods.setQty(1); cartGoods.setQty(1);
cartGoods.setCouponCode(checkSpqInfoResponseDto.getCouponCode()); cartGoods.setCouponCode(checkSpqInfoResponseDto.getCouponCode());
cartGoods.setSpuName(checkSpqInfoResponseDto.getSpuName()); 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())) {
CalculationSharingDiscountResponseDto.CalculationDiscountResult.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.setOriginalAmount(checkSpqInfoResponseDto.getPrice());
} }
} }
} }
......
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