Commit cd458058 by chongfu.liang

加料支持多份

parent 2215fffa
...@@ -14,7 +14,7 @@ public interface DistributeService { ...@@ -14,7 +14,7 @@ public interface DistributeService {
* 初始化价格 * 初始化价格
*/ */
ShoppingGoodsAmountBO initShoppingCart(CalculationDiscountBO.CalculationDiscountResult discountResult ShoppingGoodsAmountBO initShoppingCart(CalculationDiscountBO.CalculationDiscountResult discountResult
, List<CartGoods> cartGoodsList); , List<CartGoods> cartGoodsList, String couponCode);
FullReductionBO fullReduction(BaseBo baseRequestDTO, CalculationDiscountBO.CalculationDiscountResult discountResult, List<CartGoods> cartGoodsList, ActivityQueryDto activityQueryDto); FullReductionBO fullReduction(BaseBo baseRequestDTO, CalculationDiscountBO.CalculationDiscountResult discountResult, List<CartGoods> cartGoodsList, ActivityQueryDto activityQueryDto);
......
...@@ -489,7 +489,7 @@ public abstract class AbstractAddGoodsService implements AddGoodsService { ...@@ -489,7 +489,7 @@ public abstract class AbstractAddGoodsService implements AddGoodsService {
/** /**
* 用促销价格初始化购物车行记录成交价 * 用促销价格初始化购物车行记录成交价
*/ */
ShoppingGoodsAmountBO shoppingGoodsAmountBO = distributeService.initShoppingCart(distributeBO.getCalculationDiscountBO().getResult(), distributeBO.getCartGoods()); ShoppingGoodsAmountBO shoppingGoodsAmountBO = distributeService.initShoppingCart(distributeBO.getCalculationDiscountBO().getResult(), distributeBO.getCartGoods(), null);
// 满减 // 满减
FullReductionBO fullReductionBO = distributeService.fullReduction(baseRequestDTO, distributeBO.getCalculationDiscountBO().getResult(), distributeBO.getCartGoods(), activityQueryDto); FullReductionBO fullReductionBO = distributeService.fullReduction(baseRequestDTO, distributeBO.getCalculationDiscountBO().getResult(), distributeBO.getCartGoods(), activityQueryDto);
......
...@@ -400,7 +400,7 @@ public class AbstractApportionService implements GetShoppingCartGoodsApportionSe ...@@ -400,7 +400,7 @@ public class AbstractApportionService implements GetShoppingCartGoodsApportionSe
/** /**
* 用促销价格初始化购物车行记录成交价 * 用促销价格初始化购物车行记录成交价
*/ */
ShoppingGoodsAmountBO shoppingGoodsAmountBO = this.initShoppingCart(distributeBO.getCalculationDiscountBO(), distributeBO.getCartGoods()); ShoppingGoodsAmountBO shoppingGoodsAmountBO = this.initShoppingCart(distributeBO.getCalculationDiscountBO(), distributeBO.getCartGoods(), baseRequestDTO.getCouponCode());
CalculationDiscountBO.CalculationDiscountResult discountResult = null; CalculationDiscountBO.CalculationDiscountResult discountResult = null;
if (distributeBO.getCalculationDiscountBO() != null){ if (distributeBO.getCalculationDiscountBO() != null){
...@@ -1525,7 +1525,7 @@ public class AbstractApportionService implements GetShoppingCartGoodsApportionSe ...@@ -1525,7 +1525,7 @@ public class AbstractApportionService implements GetShoppingCartGoodsApportionSe
* 初始化价格 * 初始化价格
*/ */
public ShoppingGoodsAmountBO initShoppingCart(CalculationDiscountBO calculationDiscountBO public ShoppingGoodsAmountBO initShoppingCart(CalculationDiscountBO calculationDiscountBO
, List<CartGoods> cartGoodsList) { , List<CartGoods> cartGoodsList, String couponCode) {
ShoppingGoodsAmountBO shoppingGoodsAmountBO = new ShoppingGoodsAmountBO(); ShoppingGoodsAmountBO shoppingGoodsAmountBO = new ShoppingGoodsAmountBO();
/** /**
...@@ -1547,7 +1547,7 @@ public class AbstractApportionService implements GetShoppingCartGoodsApportionSe ...@@ -1547,7 +1547,7 @@ public class AbstractApportionService implements GetShoppingCartGoodsApportionSe
originalAmount = cartGoods.getOriginalPrice() * cartGoods.getQty(); originalAmount = cartGoods.getOriginalPrice() * cartGoods.getQty();
cartGoods.setOriginalAmount(originalAmount); cartGoods.setOriginalAmount(originalAmount);
this.rowRealAmount(goods, cartGoods); this.rowRealAmount(goods, cartGoods, couponCode);
//成交价行记录 //成交价行记录
amount = cartGoods.getAmount(); amount = cartGoods.getAmount();
totalAmount += amount; totalAmount += amount;
...@@ -1566,7 +1566,7 @@ public class AbstractApportionService implements GetShoppingCartGoodsApportionSe ...@@ -1566,7 +1566,7 @@ public class AbstractApportionService implements GetShoppingCartGoodsApportionSe
} }
private void rowRealAmount(List<CalculationDiscountBO.CalculationDiscountResult.Goods> goods, CartGoods cartGoods) { private void rowRealAmount(List<CalculationDiscountBO.CalculationDiscountResult.Goods> goods, CartGoods cartGoods, String couponCode) {
CalculationDiscountBO.CalculationDiscountResult.Goods find = goods CalculationDiscountBO.CalculationDiscountResult.Goods find = goods
.stream().filter((k) -> k.getCartGoodsUid().equals(cartGoods.getCartGoodsUid())) .stream().filter((k) -> k.getCartGoodsUid().equals(cartGoods.getCartGoodsUid()))
...@@ -1576,6 +1576,14 @@ public class AbstractApportionService implements GetShoppingCartGoodsApportionSe ...@@ -1576,6 +1576,14 @@ public class AbstractApportionService implements GetShoppingCartGoodsApportionSe
if (find == null) return; if (find == null) return;
cartGoods.setAmount(find.getRealAmount()); cartGoods.setAmount(find.getRealAmount());
//cartGoods.setOriginalAmount(find.getOriginalPrice()); //cartGoods.setOriginalAmount(find.getOriginalPrice());
cartGoods.setCurrentCouponDiscount(0);
if (CollectionUtils.isNotEmpty(find.getDiscounts())){
CalculationDiscountBO.CalculationDiscountResult.Goods.GoodsDiscount goodsDiscount = find.getDiscounts().stream()
.filter(p -> p.getActivityCode().equals(couponCode)).findFirst().orElse(null);
if (goodsDiscount != null){
cartGoods.setCurrentCouponDiscount(goodsDiscount.getDiscount() == null ? 0 : goodsDiscount.getDiscount().intValue());
}
}
/** /**
* 套餐的原价 * 套餐的原价
*/ */
...@@ -1603,6 +1611,14 @@ public class AbstractApportionService implements GetShoppingCartGoodsApportionSe ...@@ -1603,6 +1611,14 @@ public class AbstractApportionService implements GetShoppingCartGoodsApportionSe
} }
else { else {
amount += mt.getRealAmount(); amount += mt.getRealAmount();
choice.setCurrentCouponDiscount(0);
if (CollectionUtils.isNotEmpty(mt.getDiscounts())){
CalculationDiscountBO.CalculationDiscountResult.Goods.GoodsDiscount goodsDiscount = mt.getDiscounts().stream()
.filter(p -> p.getActivityCode().equals(couponCode)).findFirst().orElse(null);
if (goodsDiscount != null){
choice.setCurrentCouponDiscount(goodsDiscount.getDiscount() == null ? 0 : goodsDiscount.getDiscount().intValue());
}
}
choice.setAmount(mt.getRealAmount().longValue()); choice.setAmount(mt.getRealAmount().longValue());
} }
originPrice += choice.getFinalPrice() * choice.getQty()*cartGoods.getQty(); originPrice += choice.getFinalPrice() * choice.getQty()*cartGoods.getQty();
...@@ -1621,6 +1637,14 @@ public class AbstractApportionService implements GetShoppingCartGoodsApportionSe ...@@ -1621,6 +1637,14 @@ public class AbstractApportionService implements GetShoppingCartGoodsApportionSe
for (CartGoods.MaterialGoods mg : cartGoods.getProductMaterialList()) { for (CartGoods.MaterialGoods mg : cartGoods.getProductMaterialList()) {
CalculationDiscountBO.CalculationDiscountResult.Goods.SmallMaterial sm = sChoices.get(mg.getSpuId()); CalculationDiscountBO.CalculationDiscountResult.Goods.SmallMaterial sm = sChoices.get(mg.getSpuId());
if (sm != null) { if (sm != null) {
mg.setCurrentCouponDiscount(0);
if (CollectionUtils.isNotEmpty(sm.getDiscounts())){
CalculationDiscountBO.CalculationDiscountResult.Goods.GoodsDiscount goodsDiscount = sm.getDiscounts().stream()
.filter(p -> p.getActivityCode().equals(couponCode)).findFirst().orElse(null);
if (goodsDiscount != null){
mg.setCurrentCouponDiscount(goodsDiscount.getDiscount() == null ? 0 : goodsDiscount.getDiscount().intValue());
}
}
mg.setAmount(sm.getRealAmount().longValue()); mg.setAmount(sm.getRealAmount().longValue());
} }
mg.setQty(mg.getQty() * cartGoods.getQty()); mg.setQty(mg.getQty() * cartGoods.getQty());
......
...@@ -469,7 +469,7 @@ public class AbstractListCartGoodsService implements ListCartGoodsService { ...@@ -469,7 +469,7 @@ public class AbstractListCartGoodsService implements ListCartGoodsService {
ShoppingCartGoodsBO shoppingCartGoodsBO = new ShoppingCartGoodsBO(); ShoppingCartGoodsBO shoppingCartGoodsBO = new ShoppingCartGoodsBO();
ShoppingGoodsAmountBO shoppingGoodsAmountBO = distributeService.initShoppingCart(distributeBO.getCalculationDiscountBO().getResult(), distributeBO.getCartGoods()); ShoppingGoodsAmountBO shoppingGoodsAmountBO = distributeService.initShoppingCart(distributeBO.getCalculationDiscountBO().getResult(), distributeBO.getCartGoods(), baseRequestDTO.getCouponCode());
// 满减 // 满减
FullReductionBO fullReductionBO = distributeService.fullReduction(baseRequestDTO, distributeBO.getCalculationDiscountBO().getResult(), distributeBO.getCartGoods(), activityQueryDto); FullReductionBO fullReductionBO = distributeService.fullReduction(baseRequestDTO, distributeBO.getCalculationDiscountBO().getResult(), distributeBO.getCartGoods(), activityQueryDto);
......
...@@ -385,7 +385,7 @@ public abstract class AbstractUpdateGoodsQtyService implements UpdateGoodsQtySer ...@@ -385,7 +385,7 @@ public abstract class AbstractUpdateGoodsQtyService implements UpdateGoodsQtySer
/** /**
* 用促销价格初始化购物车行记录成交价 * 用促销价格初始化购物车行记录成交价
*/ */
ShoppingGoodsAmountBO shoppingGoodsAmountBO = distributeService.initShoppingCart(distributeBO.getCalculationDiscountBO().getResult(), distributeBO.getCartGoods()); ShoppingGoodsAmountBO shoppingGoodsAmountBO = distributeService.initShoppingCart(distributeBO.getCalculationDiscountBO().getResult(), distributeBO.getCartGoods(), null);
// 满减 // 满减
FullReductionBO fullReductionBO = distributeService.fullReduction(baseRequestDTO, distributeBO.getCalculationDiscountBO().getResult(), distributeBO.getCartGoods(), activityQueryDto); FullReductionBO fullReductionBO = distributeService.fullReduction(baseRequestDTO, distributeBO.getCalculationDiscountBO().getResult(), distributeBO.getCartGoods(), activityQueryDto);
......
...@@ -38,7 +38,7 @@ public class DistributeServiceImpl implements DistributeService { ...@@ -38,7 +38,7 @@ public class DistributeServiceImpl implements DistributeService {
@Override @Override
public ShoppingGoodsAmountBO initShoppingCart(CalculationDiscountBO.CalculationDiscountResult discountResult, List<CartGoods> cartGoodsList) { public ShoppingGoodsAmountBO initShoppingCart(CalculationDiscountBO.CalculationDiscountResult discountResult, List<CartGoods> cartGoodsList, String couponCode) {
ShoppingGoodsAmountBO shoppingGoodsAmountBO = new ShoppingGoodsAmountBO(); ShoppingGoodsAmountBO shoppingGoodsAmountBO = new ShoppingGoodsAmountBO();
/** /**
...@@ -63,7 +63,7 @@ public class DistributeServiceImpl implements DistributeService { ...@@ -63,7 +63,7 @@ public class DistributeServiceImpl implements DistributeService {
originalAmount = cartGoods.getOriginalPrice() * cartGoods.getQty(); originalAmount = cartGoods.getOriginalPrice() * cartGoods.getQty();
cartGoods.setOriginalAmount(originalAmount); cartGoods.setOriginalAmount(originalAmount);
this.rowRealAmount(goods, cartGoods); this.rowRealAmount(goods, cartGoods, couponCode);
//成交价行记录 //成交价行记录
amount = cartGoods.getAmount(); amount = cartGoods.getAmount();
totalAmount += amount; totalAmount += amount;
...@@ -219,7 +219,7 @@ public class DistributeServiceImpl implements DistributeService { ...@@ -219,7 +219,7 @@ public class DistributeServiceImpl implements DistributeService {
private void rowRealAmount(List<CalculationDiscountBO.CalculationDiscountResult.Goods> goods, CartGoods cartGoods) { private void rowRealAmount(List<CalculationDiscountBO.CalculationDiscountResult.Goods> goods, CartGoods cartGoods, String couponCode) {
CalculationDiscountBO.CalculationDiscountResult.Goods find = goods CalculationDiscountBO.CalculationDiscountResult.Goods find = goods
.stream().filter((k) -> k.getCartGoodsUid().equals(cartGoods.getCartGoodsUid())) .stream().filter((k) -> k.getCartGoodsUid().equals(cartGoods.getCartGoodsUid()))
...@@ -229,7 +229,14 @@ public class DistributeServiceImpl implements DistributeService { ...@@ -229,7 +229,14 @@ public class DistributeServiceImpl implements DistributeService {
if (find == null) return; if (find == null) return;
cartGoods.setAmount(find.getRealAmount()); cartGoods.setAmount(find.getRealAmount());
//cartGoods.setOriginalAmount(find.getOriginalPrice()); //cartGoods.setOriginalAmount(find.getOriginalPrice());
cartGoods.setCurrentCouponDiscount(0);
if (CollectionUtils.isNotEmpty(find.getDiscounts())){
CalculationDiscountBO.CalculationDiscountResult.Goods.GoodsDiscount goodsDiscount = find.getDiscounts().stream()
.filter(p -> p.getActivityCode().equals(couponCode)).findFirst().orElse(null);
if (goodsDiscount != null){
cartGoods.setCurrentCouponDiscount(goodsDiscount.getDiscount() == null ? 0 : goodsDiscount.getDiscount().intValue());
}
}
/** /**
* 套餐的原价 * 套餐的原价
...@@ -258,6 +265,14 @@ public class DistributeServiceImpl implements DistributeService { ...@@ -258,6 +265,14 @@ public class DistributeServiceImpl implements DistributeService {
} }
else { else {
amount += mt.getRealAmount(); amount += mt.getRealAmount();
choice.setCurrentCouponDiscount(0);
if (CollectionUtils.isNotEmpty(mt.getDiscounts())){
CalculationDiscountBO.CalculationDiscountResult.Goods.GoodsDiscount goodsDiscount = mt.getDiscounts().stream()
.filter(p -> p.getActivityCode().equals(couponCode)).findFirst().orElse(null);
if (goodsDiscount != null){
choice.setCurrentCouponDiscount(goodsDiscount.getDiscount() == null ? 0 : goodsDiscount.getDiscount().intValue());
}
}
choice.setAmount(mt.getRealAmount().longValue()); choice.setAmount(mt.getRealAmount().longValue());
} }
originPrice += choice.getFinalPrice() * choice.getQty()*cartGoods.getQty(); originPrice += choice.getFinalPrice() * choice.getQty()*cartGoods.getQty();
...@@ -276,8 +291,18 @@ public class DistributeServiceImpl implements DistributeService { ...@@ -276,8 +291,18 @@ public class DistributeServiceImpl implements DistributeService {
for (CartGoods.MaterialGoods mg : cartGoods.getProductMaterialList()) { for (CartGoods.MaterialGoods mg : cartGoods.getProductMaterialList()) {
CalculationDiscountBO.CalculationDiscountResult.Goods.SmallMaterial sm = sChoices.get(mg.getSpuId()); CalculationDiscountBO.CalculationDiscountResult.Goods.SmallMaterial sm = sChoices.get(mg.getSpuId());
if (sm != null) { if (sm != null) {
mg.setCurrentCouponDiscount(0);
if (CollectionUtils.isNotEmpty(sm.getDiscounts())){
CalculationDiscountBO.CalculationDiscountResult.Goods.GoodsDiscount goodsDiscount = sm.getDiscounts().stream()
.filter(p -> p.getActivityCode().equals(couponCode)).findFirst().orElse(null);
if (goodsDiscount != null){
mg.setCurrentCouponDiscount(goodsDiscount.getDiscount() == null ? 0 : goodsDiscount.getDiscount().intValue());
}
}
mg.setAmount(sm.getRealAmount().longValue()); mg.setAmount(sm.getRealAmount().longValue());
} }
mg.setQty(mg.getQty() * cartGoods.getQty());
mg.setOriginalAmount(mg.getFinalPrice() * mg.getQty());
} }
} }
if (GoodsTypeEnum.SET_MEAL_GOODS.getGoodsType().equals(cartGoods.getGoodsType())) { if (GoodsTypeEnum.SET_MEAL_GOODS.getGoodsType().equals(cartGoods.getGoodsType())) {
......
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