Browse Source

Avoid using Unscoped coupons regardless of the amount

pull/280/head
gdlcf88 2 years ago
parent
commit
5f751b464d
  1. 23
      plugins/Coupons/src/EasyAbp.EShop.Orders.Plugins.Coupons/EasyAbp/EShop/Orders/Plugins/Coupons/OrderDiscount/CouponOrderDiscountProvider.cs

23
plugins/Coupons/src/EasyAbp.EShop.Orders.Plugins.Coupons/EasyAbp/EShop/Orders/Plugins/Coupons/OrderDiscount/CouponOrderDiscountProvider.cs

@ -125,20 +125,23 @@ namespace EasyAbp.EShop.Orders.Plugins.Coupons.OrderDiscount
protected virtual List<IOrderLine> GetOrderLinesInScope(CouponTemplateData couponTemplate,
OrderDiscountContext context)
{
List<IOrderLine> expectedOrderLines;
if (couponTemplate.IsUnscoped)
{
return context.Order.OrderLines.ToList();
expectedOrderLines = context.Order.OrderLines.ToList();
}
var expectedOrderLines = new List<IOrderLine>();
foreach (var scope in couponTemplate.Scopes.Where(scope => scope.StoreId == context.Order.StoreId))
else
{
expectedOrderLines.AddRange(context.Order.OrderLines
.WhereIf(scope.ProductGroupName != null,
x => context.ProductDict[x.ProductId].ProductGroupName == scope.ProductGroupName)
.WhereIf(scope.ProductId.HasValue, x => x.ProductId == scope.ProductId)
.WhereIf(scope.ProductSkuId.HasValue, x => x.ProductSkuId == scope.ProductSkuId));
expectedOrderLines = [];
foreach (var scope in couponTemplate.Scopes.Where(scope => scope.StoreId == context.Order.StoreId))
{
expectedOrderLines.AddRange(context.Order.OrderLines
.WhereIf(scope.ProductGroupName != null,
x => context.ProductDict[x.ProductId].ProductGroupName == scope.ProductGroupName)
.WhereIf(scope.ProductId.HasValue, x => x.ProductId == scope.ProductId)
.WhereIf(scope.ProductSkuId.HasValue, x => x.ProductSkuId == scope.ProductSkuId));
}
}
if (expectedOrderLines.IsNullOrEmpty())

Loading…
Cancel
Save