我正在使用NopCommerce v 4.5.3.我需要建立一个插件,可以创建折扣,以配置某些角色的免费送货超过指定的价格购买.免费送货以上100元的角色A,200元的角色B等。
这是要通过创建一个新的折扣,分配给免费送货作为折扣类型,给予100%的折扣(免费送货).并在需求,通过设置第一个需求组作为必需的客户角色作为角色,并通过设置第二个需求组作为客户支出必须是X(这是一个我正在建设)
There's a free plugin that sort of matches my requirement.
它从订单表中计算客户的总订单(过去的订单),然后让用户为客户设置免费送货。这里使用的逻辑是:
var orders = await _orderService.SearchOrdersAsync(request.Store.Id,
customerId: request.Customer.Id,
osIds: new List<int> { (int)OrderStatus.Complete });
var spentAmount = orders.Sum(o => o.OrderTotal);
if (spentAmount > spentAmountRequirement)
在这种情况下,他们可以快速完成,因为他们只需要使用SearchOrdersAsync()方法对一个表中的值求和。
但是对于购物车,我需要首先使用客户ID过滤购物车表,然后从购物车中获取所需的productID,最后从产品表中汇总其价格。
它的查询:
select sum(Price) from dbo.Product
where id in (
select ProductId
from dbo.ShoppingCartItem
where CustomerId = 2047)
--Result:1800
只有在获得产品ID之后,我才能转到Product表并过滤它们以汇总其价格。
我试过使用GetShoppingCartAsync()方法,但我无法使用任何列表来存储客户购物车中的多个产品,因为GetShoppingCartAsync()的定义中没有列表,而用于订单的SearchOrdersAsync()有一个名为osIds的列表。
1条答案
按热度按时间mbjcgjjk1#
GetShoppingCartAsync()
方法返回IList<ShoppingCartItem>
,ShoppingCartItem
实体包含购物车项目的ProductId
。由于nopCommerce不给予按ProductId筛选购物车项目的功能,并且您需要产品的原始价格,因此可以执行以下操作:首先获取所有ProductId
合计产品的价格
productPrice
将返回客户购物车中的产品总数。