Commit ff651c72 by 周晓航

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

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