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 {
* 例如8折为80
*/
private Integer memberDiscount;
private String couponCode;
/**
* 加料
*/
......
......@@ -160,7 +160,10 @@ public class SetMealServiceImpl implements IPromotionService {
return number - cartGoods.getQty() < 0 ? "该商品限" + number + "份优惠 超出按照原价计算哦" : "";
} else {
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 {
* 固定搭配
* productComboList
*/
Long originalPriceSum = 0L;
List<ShoppingCartGoodsDto.CartGoodsDetailDto> combs = new ArrayList<>();
if (CollectionUtils.isNotEmpty(cartGoods.getProductComboList())) {
HashMap<String, BlockRow> gxDiscount = this.drawnSmallAndGroupRow(calculationGoods, 2, true);
List<ShoppingCartGoodsDto.CartGoodsDetailDto> comboLists = this.com2DetailGoods(gxDiscount, cartGoods.getProductComboList(), cartGoods, true);
combs.addAll(comboLists);
cartGoodsDetailDto.setProductType(ProductType.SETMEAL.getCode());
originalPriceSum = comboLists.stream().mapToLong(ShoppingCartGoodsDto.CartGoodsDetailDto::getOriginalPrice).sum();
cartGoodsDetailDto.setOriginalPrice(originalPriceSum);
}
/**
* 可选商品
* productGroupList
*/
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);
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);
List<ShoppingCartGoodsDto.CartGoodsDetailDto.CartGoodsExtra> cartGoodsExtras = BeanUtil.convertBeans(cartGoods.getExtra(), ShoppingCartGoodsDto.CartGoodsDetailDto.CartGoodsExtra::new);
......@@ -441,7 +451,7 @@ public class CalculationCommonService {
com.setUnit(comb.getUnit());
List<ShoppingCartGoodsDto.CartGoodsDetailDto.CartGoodsExtra> cartGoodsExtras = BeanUtil.convertBeans(comb.getExtra(), ShoppingCartGoodsDto.CartGoodsDetailDto.CartGoodsExtra::new);
com.setExtraList(cartGoodsExtras);
com.setOriginalPrice(comb.getOriginalPrice());
com.setOriginalPrice(comb.getFinalPrice());
//todo
BlockRow row = discount.get(comb.getGoodsId());
if (row == null) {
......
......@@ -8,8 +8,8 @@ import cn.freemud.entities.dto.calculate.CalculationSharingDiscountResponseDto;
import cn.freemud.entities.vo.CartGoods;
import cn.freemud.entities.vo.ShoppingCartInfoRequestVo;
import cn.freemud.enums.ActivityChannelEnum;
import cn.freemud.enums.GoodsTypeEnum;
import cn.freemud.enums.ResponseResult;
import cn.freemud.interceptor.BizServiceException;
import cn.freemud.interceptor.ServiceException;
import cn.freemud.service.CommonService;
import cn.freemud.service.CouponService;
......@@ -85,7 +85,11 @@ public class CalculationSharingDiscountService {
cartGoodsList.remove(i);
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);
cartGoods.setName(checkSpqInfo.getCouponName());
......@@ -98,7 +102,12 @@ public class CalculationSharingDiscountService {
// 添加商品券代表的商品放入促销
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 {
calculationDiscountGoods.setMemberDiscount(100);
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 {
ActivityDiscountsDto activityDiscountsDto = new ActivityDiscountsDto();
activityDiscountsDto.setActivityCode(discount.getActivityCode());
activityDiscountsDto.setActivityName(discount.getActivityName());
activityDiscountsDto.setActivityType(discountType);
activityDiscountsDto.setActivityType(calculationCommonService.convertType(discountType));
activityDiscountsDto.setDiscountAmount(0 - discountAmount);
activityDiscountsDtos.add(activityDiscountsDto);
}
......
......@@ -236,13 +236,13 @@ public class AdditionSharingService {
if (discountResult == null || CollectionUtils.isEmpty(discountResult.getGoods()) || premiumExchangeActivity == null || CollectionUtils.isEmpty(premiumExchangeActivity.getProducts())) {
return;
}
CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods hgGood = discountResult.getGoods()
List<CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods> manyHgs = discountResult.getGoods()
.stream()
.filter(d -> CalculationGoodsType.TYPE_2.getType().equals(d.getCartGoodType()))
.findFirst()
.orElse(null);
.collect(Collectors.toList());
if (hgGood == null) {
if (CollectionUtils.isEmpty(manyHgs)) {
throw new ServiceException(ResponseResult.PREMIUM_EXCHANGE_ACTIVITY_NOT_EXIST);
}
......@@ -265,6 +265,10 @@ public class AdditionSharingService {
if (null == getProductsVo) {
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.getProducts().add(cartGoodsDetailDto);
//2.计算优惠价格
......
......@@ -7,6 +7,7 @@ import cn.freemud.entities.dto.calculate.CalculationSharingDiscountResponseDto;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.vo.*;
import cn.freemud.enums.CouponFlag;
import cn.freemud.enums.GoodsTypeEnum;
import cn.freemud.service.CouponService;
import com.freemud.sdk.api.assortment.shoppingcart.constant.CommonsConstant;
import com.google.common.collect.Lists;
......@@ -93,6 +94,22 @@ public class CouponSharingService {
cartGoods.setQty(1);
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())) {
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