Commit ff651c72 by 周晓航

Merge branch '【盛香亭】【C端】订单明细套餐商品价格计算-zxh'

parents 7fa61d82 65cbd93a
...@@ -3009,19 +3009,20 @@ public class OrderSdkAdapter { ...@@ -3009,19 +3009,20 @@ public class OrderSdkAdapter {
orderItemCreateReq.setSettlementPrice(settlementPrice); orderItemCreateReq.setSettlementPrice(settlementPrice);
totalOriginalProductAmount = weightPrice.longValue(); totalOriginalProductAmount = weightPrice.longValue();
} else { } else {
Long settlementPrice = product.getPrice() * product.getNumber() - totalDiscountAmount; Long productPrice = product.getPrice() * product.getNumber();
Long settlementPrice = productPrice - totalDiscountAmount;
orderItemCreateReq.setSalePrice(settlementPrice / product.getNumber()); orderItemCreateReq.setSalePrice(settlementPrice / product.getNumber());
orderItemCreateReq.setSettlementPrice(settlementPrice); orderItemCreateReq.setSettlementPrice(settlementPrice);
/** /**
* 套餐商品 * 套餐商品
* 套餐原价 = 子商品总原价(称重菜原价*重量+普通商品原价*数量+可选商品原价*数量) * 套餐原价 = 子商品总原价(称重菜原价*重量+普通商品原价*数量+可选商品原价*数量) fisherman 新算价改动,套餐原价直接取 促销给的值, (因为套餐划线价问题)
* 套餐结算价 = (套餐价设置为0) ?所有子商品结算价和 * 套餐数量 : 套餐原价*套餐数量-优惠价 * 套餐结算价 = (套餐价设置为0) ?所有子商品结算价和 * 套餐数量 : 套餐原价*套餐数量-优惠价
* 套餐售价 = 套餐结算价 / 套餐数量 * 套餐售价 = 套餐结算价 / 套餐数量
*/ */
if (ProductTypeEnum.SETMEAL_PRODUCT.getCode().equals(product.getProductType()) || ProductTypeEnum.SETMEAL_UPPRICE_PRODUCT.getCode().equals(product.getProductType())) { if (ProductTypeEnum.SETMEAL_PRODUCT.getCode().equals(product.getProductType()) || ProductTypeEnum.SETMEAL_UPPRICE_PRODUCT.getCode().equals(product.getProductType())) {
if (CollectionUtils.isNotEmpty(product.getComboProduct())) { if (CollectionUtils.isNotEmpty(product.getComboProduct())) {
// 套餐原价 // 套餐原价
Long setmealProductTotalOriginalAmount = 0L; // Long setmealProductTotalOriginalAmount = 0L;
// 套餐结算价 // 套餐结算价
Long setmealTotalSettlementPrice = 0L; Long setmealTotalSettlementPrice = 0L;
for (CreateOrderProductRequest createOrderProductRequest : product.getComboProduct()) { for (CreateOrderProductRequest createOrderProductRequest : product.getComboProduct()) {
...@@ -3035,21 +3036,21 @@ public class OrderSdkAdapter { ...@@ -3035,21 +3036,21 @@ public class OrderSdkAdapter {
Double weightPrice = createOrderProductRequest.getPrice() * weight; Double weightPrice = createOrderProductRequest.getPrice() * weight;
Long comboSettlementPrice = weightPrice == 0 ? 0 : weightPrice.longValue() - comboProductTotalDiscountAmount; Long comboSettlementPrice = weightPrice == 0 ? 0 : weightPrice.longValue() - comboProductTotalDiscountAmount;
setmealTotalSettlementPrice += comboSettlementPrice; setmealTotalSettlementPrice += comboSettlementPrice;
setmealProductTotalOriginalAmount += weightPrice.longValue(); // setmealProductTotalOriginalAmount += weightPrice.longValue();
} else { } else {
Long numberPrice = createOrderProductRequest.getPrice() * createOrderProductRequest.getNumber(); Long numberPrice = createOrderProductRequest.getPrice() * createOrderProductRequest.getNumber();
Long comboSettlementPrice = numberPrice - comboProductTotalDiscountAmount; Long comboSettlementPrice = numberPrice - comboProductTotalDiscountAmount;
setmealTotalSettlementPrice += comboSettlementPrice; setmealTotalSettlementPrice += comboSettlementPrice;
setmealProductTotalOriginalAmount += numberPrice; // setmealProductTotalOriginalAmount += numberPrice;
} }
} }
// 套餐原价 // 套餐原价 fisherman 新算价改动,套餐原价直接取 促销给的值, (因为套餐划线价问题)
orderItemCreateReq.setProductPrice(setmealProductTotalOriginalAmount / product.getNumber()); orderItemCreateReq.setProductPrice(productPrice);
// 如果套餐没有设置价格取子商品结算价和,否则取套餐自身的结算价 // 如果套餐没有设置价格取子商品结算价和,否则取套餐自身的结算价
setmealTotalSettlementPrice = product.getPrice() == 0 ? setmealTotalSettlementPrice : settlementPrice; setmealTotalSettlementPrice = product.getPrice() == 0 ? setmealTotalSettlementPrice : settlementPrice;
orderItemCreateReq.setSettlementPrice(setmealTotalSettlementPrice); orderItemCreateReq.setSettlementPrice(setmealTotalSettlementPrice);
orderItemCreateReq.setSalePrice(setmealTotalSettlementPrice / product.getNumber()); orderItemCreateReq.setSalePrice(setmealTotalSettlementPrice / product.getNumber());
totalOriginalProductAmount = setmealProductTotalOriginalAmount; // totalOriginalProductAmount = setmealProductTotalOriginalAmount;
} }
} }
} }
......
...@@ -340,8 +340,8 @@ public class ShoppingCartAdapter { ...@@ -340,8 +340,8 @@ public class ShoppingCartAdapter {
//更新当前商品行价格 //更新当前商品行价格
Long newOrigOriginalPrice = 0L; Long newOrigOriginalPrice = 0L;
if (isSetMealProduct) { if (isSetMealProduct) {
// fisherman ---> 套餐划线价取值--> 根据商户号配置 取值不同
newOrigOriginalPrice += cartGoods.getProductComboList().stream().mapToLong(t -> t.getOriginalAmount()).sum(); newOrigOriginalPrice += cartGoods.getProductComboList().stream().mapToLong(t -> t.getOriginalAmount()).sum();
newOrigOriginalPrice += cartGoods.getProductGroupList().stream().mapToLong(t -> t.getOriginalAmount()).sum();
} else { } else {
newOrigOriginalPrice = isSkuProduct ? skuProduct.getFinalPrice() : spuProduct.getFinalPrice(); newOrigOriginalPrice = isSkuProduct ? skuProduct.getFinalPrice() : spuProduct.getFinalPrice();
} }
......
...@@ -197,7 +197,6 @@ public class ShoppingCartController { ...@@ -197,7 +197,6 @@ public class ShoppingCartController {
return shoppingCartDemoController.getShoppingCartGoodsApportion(getShoppingCartGoodsApportionRequestVo); return shoppingCartDemoController.getShoppingCartGoodsApportion(getShoppingCartGoodsApportionRequestVo);
} else { } else {
BaseResponse<ShoppingCartGoodsDto> shoppingCartGoods = instanceByRequest.getShoppingCartGoods(shoppingCartInfoRequestVo, getShoppingCartGoodsApportionRequestVo.getPremiumExchangeActivity()); BaseResponse<ShoppingCartGoodsDto> shoppingCartGoods = instanceByRequest.getShoppingCartGoods(shoppingCartInfoRequestVo, getShoppingCartGoodsApportionRequestVo.getPremiumExchangeActivity());
ShoppingSdkLogUtil.infoLog("fisherman getShoppingCartGoodsApportion", JSON.toJSONString(shoppingCartGoods));
return shoppingCartGoods; return shoppingCartGoods;
} }
} }
......
...@@ -83,11 +83,12 @@ public class CalculationCommonService { ...@@ -83,11 +83,12 @@ public class CalculationCommonService {
for (CartGoods cartGoods : cartGoodsList) { for (CartGoods cartGoods : cartGoodsList) {
originalAmount = 0L;amount = 0L;packageAmount = 0L; originalAmount = 0L;amount = 0L;packageAmount = 0L;
this.rowRealAmount(goods, cartGoods, couponCode);
//原价行记录 //原价行记录
originalAmount = cartGoods.getOriginalPrice() * cartGoods.getQty(); originalAmount = cartGoods.getOriginalPrice() * cartGoods.getQty();
cartGoods.setOriginalAmount(originalAmount); cartGoods.setOriginalAmount(originalAmount);
this.rowRealAmount(goods, cartGoods, couponCode);
//成交价行记录 //成交价行记录
amount = cartGoods.getAmount(); amount = cartGoods.getAmount();
totalAmount += amount; totalAmount += amount;
...@@ -152,14 +153,15 @@ public class CalculationCommonService { ...@@ -152,14 +153,15 @@ public class CalculationCommonService {
} }
//cartGoods.setOriginalAmount(find.getOriginalPrice()); //cartGoods.setOriginalAmount(find.getOriginalPrice());
/** /**
* 套餐的原价 * 套餐的原价 fisherman ---> 可能历史原因 促销给的 originalPrice 没有包含可选搭配的价格, 所以购物车自己又重新算了一遍
* 20211015 进行 【盛香亭】【B端】订单明细套餐商品价格计算 需求, 促销会根据商户配置 设置套餐的划线价, 这里直接取促销的值就可以了 + 购物车自己算可算搭配的值
*/ */
Long originPrice = 0L; Long originPrice = find.getOriginalPrice();
if (CollectionUtils.isNotEmpty(cartGoods.getProductComboList())) { // if (CollectionUtils.isNotEmpty(cartGoods.getProductComboList())) {
for (CartGoods.ComboxGoods com : cartGoods.getProductComboList()) { // for (CartGoods.ComboxGoods com : cartGoods.getProductComboList()) {
originPrice += com.getFinalPrice() * cartGoods.getQty() * com.getQty(); // originPrice += com.getFinalPrice() * cartGoods.getQty() * com.getQty();
} // }
} // }
/** /**
* 可选搭配 * 可选搭配
*/ */
...@@ -221,6 +223,9 @@ public class CalculationCommonService { ...@@ -221,6 +223,9 @@ public class CalculationCommonService {
} }
if (GoodsTypeEnum.SET_MEAL_GOODS.getGoodsType().equals(cartGoods.getGoodsType())) { if (GoodsTypeEnum.SET_MEAL_GOODS.getGoodsType().equals(cartGoods.getGoodsType())) {
cartGoods.setOriginalAmount(originPrice); cartGoods.setOriginalAmount(originPrice);
// cartGoods.setOriginalPrice(find.getOriginalPrice());
// fisherman 取值 originPrice 的原因是因为 如果存在可选搭配, 促销反馈的价格是没计算可选搭配的, 所以这里需要加上去,
cartGoods.setOriginalPrice(originPrice);
} }
} }
...@@ -499,6 +504,7 @@ public class CalculationCommonService { ...@@ -499,6 +504,7 @@ public class CalculationCommonService {
/** /**
* 固定搭配 * 固定搭配
* productComboList * productComboList
* fisherman 固定搭配套餐价设置,促销不计算可选搭配价格
*/ */
Long originalPriceSum = 0L; Long originalPriceSum = 0L;
List<ShoppingCartGoodsDto.CartGoodsDetailDto> combs = new ArrayList<>(); List<ShoppingCartGoodsDto.CartGoodsDetailDto> combs = new ArrayList<>();
...@@ -507,11 +513,17 @@ public class CalculationCommonService { ...@@ -507,11 +513,17 @@ public class CalculationCommonService {
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());
if (calculationGoods !=null) {
originalPriceSum = calculationGoods.getOriginalPrice();
}else {
for (ShoppingCartGoodsDto.CartGoodsDetailDto comboList : comboLists) { for (ShoppingCartGoodsDto.CartGoodsDetailDto comboList : comboLists) {
originalPriceSum += (comboList.getQty() / cartGoods.getQty()) * comboList.getOriginalPrice(); originalPriceSum += (comboList.getQty() / cartGoods.getQty()) * comboList.getOriginalPrice();
} }
}
cartGoodsDetailDto.setOriginalPrice(originalPriceSum); cartGoodsDetailDto.setOriginalPrice(originalPriceSum);
} }
/** /**
* 可选商品 * 可选商品
* productGroupList * productGroupList
......
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