2.7 Commerce Promotion 模块:可灵活扩展的促销系统

在前面的章节讲述 Commerce Order 模块的时候,我们介绍了 订单调整 的概念。 Commerce Promotion 模块的基石,就是 订单调整

内容实体

  • commerce_promotion 用来保存促销方案数据

    一个网站中可以添加无数个促销方案,由该实体的字段分析,我们可以看到,一个促销方案主要包含了以下内容:

    • 名称
    • 能参与该促销的订单类型(可有多种订单类型)
    • 能参与该促销的店铺(可有多个店铺)
    • 该促销所使用的折扣方式
    • 该促销的定向设置(仅面向特定用户或仅面向特定产品,等等)
    • 该促销的使用数量限制(仅提供多少个名额)
    • 该促销的开始时间和结束时间
    • 该促销是否能与其它促销一起使用
    • 该促销已发行的优惠券

    值得特别提一下的是,在定向设置中,定向条件非常丰富,系统自带多达11种定向条件,具体可以打开该实体类型的编辑表单查看。

    除了可以使用自带的定向条件外,开发者还可以自定义定向条件类型,只需要实现一个 @CommerceCondition 插件即可。 @CommerceCondition 插件不单可以用在这里,在 Drupal Commerce 的其他模块中,其实也是有使用的。 事实上 @CommerceCondition 插件本身就不是 Commerce Promotion 模块定义的,它是 Commerce 主模块中定义的, 而上述所说的11种定向条件,分别是11个 @CommerceCondition 插件实现,它们之中,除了 order_item_quantity外, 其他插件都是别的模块实现的。

  • commerce_promotion_coupon 用来保存优惠券数据

    commerce_promotion实体中,我们看到一个 优惠券 字段。一个常规的促销,在用户购物时会自动参与,但当一个促销选择发行优惠券时, 它与普通的促销产生了一点区别,那就是只能在订单结账的过程中输入优惠券码,才能参与促销。

    一个 促销方案 可以发行多个优惠券,每个优惠券有一个券码,同时可以限定这个码被使用的次数。 我们发现 促销方案 本身也有一个数量限制,是的,所有已使用的优惠券的的使用次数加起来,不能超过 促销方案 的整体限制, 一旦超过这个限制,即使优惠券本身还有效,在使用的时候也是被判断为无效的。

    commerce_promotion_coupon 实体的字段比较简单,这里就不再展开细说。

@CommercePromotionOffer 插件

这是本模块最重要的东西,每一个 促销方案 都必须选择一个 折扣方式。 而这些折扣方式就是通过 @CommercePromotionOffer 插件来实现的。

模块自带了5个插件实现:

  • order_buy_x_get_y 买x送y
  • order_percentage_off 订单整体折扣,按百分比
  • order_fixed_amount_off 订单整体折扣,按固定金额
  • order_item_percentage_off 订单项折扣,按百分比
  • order_item_fixed_amount_off 订单项折扣,按固定金额

这些插件都比较好理解,读都可以去测试体验一下,在功能上做得是比较丰富的。

order_processor 订单刷新处理器

本模块对订单的折扣调整是通过 Commerce Order 模块的 Adjustment 机制来完成的。 那么这些 Adjustment 是如何被应用到订单中去的呢,是通过 Commerce Order 模块的另一个重要机制 Order refresh and processing,对此感到陌生的朋友可以返回前面的章节查阅。

本模块提供了一个专用的刷新处理器,它的服务名是 commerce_promotion.promotion_order_processor, 详情请参阅代码 Drupal\commerce_promotion\PromotionOrderProcessor

优惠券回收面板

在 Commerce Checkout 模块中,我们提及到 @CommerceCheckoutPane 插件,它可以在结账流程中 添加用户交互表单。

本模块实现了一个 @CommerceCheckoutPane 插件,提供了一个让用户输入优惠券的表单。

暂时来讲,优惠券暂时只能通过这样的方式使用,这不太符合中国国情。 但是我们可以去扩展它,使得优惠券可以被用户 领取,然后在结账过程中,直接选择希望使用的优惠券。 有兴趣的读者可以关注一下开源项目 WeeShop,我们正在做这件事。

 

欢迎大家加QQ群讨论:747120338

评论 (1)

    • 2019-07-18

    欢迎大家加QQ群讨论:747120338