61 lines
1.6 KiB
C#
61 lines
1.6 KiB
C#
using Store.Product.Models.Product.Sku;
|
|
using System.Linq;
|
|
|
|
namespace Store.Product.Models.PublishParameters.Price
|
|
{
|
|
/// <summary>
|
|
/// 高低价格配置
|
|
/// </summary>
|
|
public class HighLowPrice : PriceConfigBase
|
|
{
|
|
public override PriceStrategyType PriceType => PriceStrategyType.高低价格;
|
|
|
|
/// <summary>
|
|
/// 低价倍数
|
|
/// </summary>
|
|
public decimal LowMultiples { get; set; } = 1;
|
|
/// <summary>
|
|
/// 其他倍数
|
|
/// </summary>
|
|
public decimal OtherMultiples { get; set; } = 1;
|
|
|
|
|
|
/// <summary>
|
|
/// 计算价格
|
|
/// </summary>
|
|
/// <param name="oldPrice"></param>
|
|
/// <returns></returns>
|
|
public override decimal ComputedPrice(decimal oldPrice)
|
|
{
|
|
return oldPrice * OtherMultiples;
|
|
}
|
|
/// <summary>
|
|
/// 计算最低价
|
|
/// </summary>
|
|
/// <param name="oldPrice"></param>
|
|
/// <returns></returns>
|
|
public decimal ComputedLowPrice(decimal oldPrice)
|
|
{
|
|
return oldPrice * LowMultiples;
|
|
}
|
|
|
|
|
|
public override SkuMaps ComputedPrice(SkuMaps skuMaps)
|
|
{
|
|
decimal minPrice = skuMaps.Min(a => a.Price);
|
|
foreach (var item in skuMaps)
|
|
{
|
|
if (item.Price == minPrice)
|
|
{
|
|
ComputedLowPrice(item.Price);
|
|
}
|
|
else
|
|
{
|
|
item.Price = ComputedPrice(item.Price);
|
|
}
|
|
}
|
|
return skuMaps;
|
|
}
|
|
}
|
|
}
|