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, protected virtual List<IOrderLine> GetOrderLinesInScope(CouponTemplateData couponTemplate,
OrderDiscountContext context) OrderDiscountContext context)
{ {
List<IOrderLine> expectedOrderLines;
if (couponTemplate.IsUnscoped) if (couponTemplate.IsUnscoped)
{ {
return context.Order.OrderLines.ToList(); expectedOrderLines = context.Order.OrderLines.ToList();
} }
else
var expectedOrderLines = new List<IOrderLine>();
foreach (var scope in couponTemplate.Scopes.Where(scope => scope.StoreId == context.Order.StoreId))
{ {
expectedOrderLines.AddRange(context.Order.OrderLines expectedOrderLines = [];
.WhereIf(scope.ProductGroupName != null, foreach (var scope in couponTemplate.Scopes.Where(scope => scope.StoreId == context.Order.StoreId))
x => context.ProductDict[x.ProductId].ProductGroupName == scope.ProductGroupName) {
.WhereIf(scope.ProductId.HasValue, x => x.ProductId == scope.ProductId) expectedOrderLines.AddRange(context.Order.OrderLines
.WhereIf(scope.ProductSkuId.HasValue, x => x.ProductSkuId == scope.ProductSkuId)); .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()) if (expectedOrderLines.IsNullOrEmpty())

Loading…
Cancel
Save