Skip to content

电子商务

melis-commerce 为 Melis 添加了一个完整的电子商务领域:目录、客户、购物车、结账和订单——既以后台工具的形式暴露,也以前台插件的形式提供。本页是一份帮助你快速上手的导览;如需了解确切的、最新的 API,请阅读该模块的 src/Service/

Melis v6 中,框架、模块及其服务保持不变——变化的是后台 UI:commerce 工具现在作为原生 React "bricks" 运行于 /melis-react 中(参见创建工具)。每个工具都保留了逐工具的 New / Old 切换开关,因此你可以回退到 iframe 中的经典界面,而全局悬浮的 AI 助手则在每个工具上均可使用。

领域模型

主要概念(位于 melis-commerce/src/Entity/ 下的实体,表以 melis_ecom_* 为前缀):

领域概念表(示例)
目录产品、变体(可售卖的 SKU)、类别、属性及其值melis_ecom_productmelis_ecom_variantmelis_ecom_categorymelis_ecom_attribute
定价按变体/产品 × 国家 × 货币 × 客户组的价格melis_ecom_pricemelis_ecom_client_groups
客户客户(账户)、客户联系人、地址melis_ecom_clientmelis_ecom_client_person
购物车匿名与持久化购物篮melis_ecom_basket_anonymousmelis_ecom_basket_persistent
订单订单 + 地址、支付、配送;退货melis_ecom_ordermelis_ecom_order_addressmelis_ecom_order_payment
促销优惠券(限定产品/客户)melis_ecom_couponmelis_ecom_coupon_product
本地化国家、货币melis_ecom_countrymelis_ecom_currency
媒体文档(图片/PDF)melis_ecom_document

你将会用到的服务

全部注册于 melis-commerce/config/module.config.phpservice_manager.aliases)。主要的服务有:

  • 目录MelisComProductServiceMelisComVariantServiceMelisComCategoryServiceMelisComAttributeServiceMelisComPriceServiceMelisComProductSearchServiceMelisComDocumentService
  • 购物车与结账MelisComBasketServiceMelisComOrderCheckoutServiceMelisComOrderServiceMelisComShipmentCostServiceMelisComPostPaymentServiceMelisComOrderProductReturnService
  • 客户MelisComClientServiceMelisComAuthenticationServiceMelisComContactServiceMelisComClientGroupsService
  • 配置MelisComCouponServiceMelisComCurrencyServiceMelisComSeoService
php
$products = $sm->get('MelisComProductService');
$orders   = $sm->get('MelisComOrderService');

每个服务都建立在一个 MelisEcom*Table 数据层之上(例如 MelisEcomProductTablemelis_ecom_product)。React 后台并不会重新实现其中任何逻辑:它的 /melis/react-api/… 端点仅校验输入并组织 JSON,然后调用这些相同的服务。

在后台中

MelisCommerce 在 /melis-react 侧边栏中注册了一个 MelisCommerce 区块,包含涵盖整个领域的 13 个 React 工具Accounts(账户)、Contacts(联系人)、Catalogs(目录)、Products(产品)、Orders(订单)、Coupons(优惠券)、Attributes(属性)、Countries(国家)、Commerce languages(商务语言)、Currencies(货币)、Order status(订单状态)、Client's groups(客户组)和 Commerce settings(商务设置)。每一个都是真正的 React 页面(在默认的 "New" 视图中没有 iframe),并在各自的路由上打开;"entity"(实体)工具会将一条记录作为持久化的子标签页打开,因此你可以随时跳回列表而不会丢失当前位置。每个工具都带有一个 New / Old 开关——"Old" 会在 iframe 中显示经典工具,方便你进行对比。

/melis-react 侧边栏中的 MelisCommerce 区块——工具选择器。

一个典型的工作流:先构建目录(Attributes → Catalogs → Products/Variants),再管理客户(Accounts + Contacts),然后运行订单流水线(Orders + 优惠券),所有这些都由 commerce 参考列表(Countries、Currencies、Order status、Client's groups、Settings)作为支撑。

  • 目录(Catalog)——Catalogs 工具是一个类别(拖动可重新排序;每个节点有 Properties / SEO / Products)。Products 列出产品(搜索、复制、导出);编辑器包含 PropertiesTextVariantsSEOPrices 标签页,并提供功能丰富的逐变体编辑器(价格、库存、SEO、关联、媒体)。Attributes 管理带类型的特征(Properties / Labels / Values)。

    产品列表(React)。

    产品编辑器——Variants 标签页。

  • 客户(Customers)——Accounts 是 B2B 客户(Properties、Company、Contacts、Addresses、Orders、Files),支持搜索、筛选、列管理器、导出和 CSV 导入Contacts 是具体的个人(Information / Address / Association),关联到一个或多个账户。

    账户列表(React)。

  • 订单(Orders)——Orders 工具列出订单(筛选、状态筛选、导出)。逐订单编辑器包含 PropertiesBasketAddressesPaymentShippingMessagesReturns 标签页(当启用开票功能时还会有 Invoices——见下文)。New Order 会打开一个引导式的 7 步结账向导(联系人 → 账户 → 产品 → 地址 → 摘要 → 支付 → 确认),由服务端会话支撑,可从你上次离开的位置继续。

    订单列表(React)。

    New Order 结账向导。

  • 参考与配置(Reference & config)——Coupons(Properties、Assign account、Assign product、使用记录 Orders)、CountriesCommerce languagesCurrencies(带有设为默认操作)、Order status(状态 + 颜色 + 逐语言标签)、Client's groups,以及单个 Commerce settings 页面(Properties + Accounts)。

如需完整的逐工具、逐标签页参考(路由、功能、react-api 端点),请参见 melis-commerce 模块参考

在前台中

Commerce 附带了一大批模板插件(将它们放入页面中——参见 插件),涵盖整个店面:

  • 目录MelisCommerceProductShowPluginMelisCommerceProductListPluginMelisCommerceProductSearchPluginMelisCommerceCategoryProductListPluginMelisCommerceRelatedProductsPlugin
  • 账户MelisCommerceLoginPluginMelisCommerceRegisterPluginMelisCommerceAccountPluginMelisCommerceProfilePlugin,以及配送/账单地址插件。
  • 购物车与结账MelisCommerceAddToCartPluginMelisCommerceCartPluginMelisCommerceCheckoutPlugin(+ 购物车 / 优惠券 / 地址 / 摘要 / 确认步骤)。
  • 订单MelisCommerceOrderHistoryPluginMelisCommerceOrderPluginMelisCommerceOrderReturnProductPlugin

……外加仪表盘小组件(订单数量、销售收入、订单消息)。

因此,一个店面主要是通过在 CMS 页面上放置这些插件并在你的站点模块视图中为其设置样式来组装的。React 后台的变化不会影响前台:店面插件及其视图保持不变。

开票

melis-commerce-order-invoice 通过 PDF 发票生成(借助 Spipu/Html2Pdf)扩展了 commerce:一个发票服务 + 表(melis_ecom_order_invoice),以及从订单数据生成发票的监听器。在 React 后台中,它没有自己的工具——它是一个扩展 brick,在该模块启用时向 Orders 工具注入两处内容:

  • 订单编辑器中的 Invoices 标签页——列出发票、Regenerate Invoice(重新生成发票),并可下载任意所列发票;
  • Orders 列表中逐行的下载按钮,用于获取该订单的最新发票 PDF。

如果你看不到它们,请检查 melis-commerce-order-invoice 是否已启用,以及你的角色是否拥有 Orders 的 Invoices 权限。参见 melis-commerce-order-invoice 模块参考

关键文件

关注点路径
服务vendor/melisplatform/melis-commerce/src/Service/
实体vendor/melisplatform/melis-commerce/src/Entity/
Schemavendor/melisplatform/melis-commerce/install/sql/setup_structure.sql
前台插件vendor/melisplatform/melis-commerce/src/Controller/Plugin/
React bricks 与 APIvendor/melisplatform/melis-commerce/ui-react/config/react-api.phpsrc/Controller/ReactApi/
开票vendor/melisplatform/melis-commerce-order-invoice/