使用附加数据扩展 Spartacus NGRX Store

Extend Spartacus NGRX Store with additional data

对于我们的 Spartacus 项目,我们需要在结帐中引入额外的数据属性: 我们有这样的情况,用户需要 select 每个产品的交付模式。

在理想情况下,在 selection 上,selected 交付模式将保存在 NGRX 商店和后端中,以保持此处定义的数据绑定原则: https://sap.github.io/spartacus-docs/connecting-to-other-systems/#component-data-binding

预期数据/用户流:

  1. 用户转到结帐和交付模式步骤
  2. 进行自定义 OCC 调用以加载每个产品支持的交付模式(取决于产品类型和进一步的客户特定逻辑)
  3. 显示购物车项目,并通过包含可用交付模式的下拉菜单进行增强
  4. 用户select是一种交付方式
  5. selected 交付模式存储在 NGRX 商店内的购物车条目中并保存在后端
  6. 新的购物车总计是根据 selected 交付模式
  7. 的成本计算的
  8. 新的购物车总计存储在 NGRX 商店内的购物车上并保存在后端
  9. 用户点击继续进入查看订单步骤
  10. 购物车中的商品使用之前 select 的送货方式列出

经过对现有代码的一些分析,我们在orderEntry上发现了一个属性deliveryMode。这似乎没有在斯巴达克斯的任何地方使用,但可以通过遵循此 Whosebug answer and .

来使第 9 步工作。

关于此流程的问题:

在 Slack 频道中似乎有几个答案,但关于扩展 ngrx 存储的可用答案很少,尽管对我们来说,这似乎是一项正常的任务..:-/

如有任何想法、意见或支持,我们将不胜感激。 :-)

这似乎是一件很难完成的事情,因为在 spartacus 中不按原样支持每种产品的交付模式。但一些想法:

  • 您可以扩展核心 CartEntry 类(适配器、连接器、外观等)以包含添加到购物车的条目的交付模式。您可能需要更改所有内容以包括交付模式设置。所有这些都是公开的,因此您可以根据需要修改它们,包括商店。

  • 利用多个购物车使每个购物车有一个产品并以此方式设置交付模式。但在我看来这会很麻烦。

就价格计算而言,我假设 OCC 调用 return 总价。购物车条目的调用是否包括每次条目的交付模式成本?

我们已经实施了以下解决方法并且目前有效:

  1. 增强后端的购物车模型
  2. 添加新端点以加载每个产品的可用交付模式(通过绕过 NGRX 商店)
  3. 添加新端点以保存选定的交付模式(通过绕过 NGRX 商店)
  4. 保存端点后,触发购物车重新加载,将订单条目上具有自定义 属性 的新购物车总计(通过类型扩充)从后端加载到商店中