immera / ecom-discount

这是一个在API端实现折扣的常用包。

0.0.3 2023-06-13 18:16 UTC

This package is auto-updated.

Last update: 2024-09-13 20:46:22 UTC


README

这将为电子商务网站提供一个简单的折扣模块。

简介
一般来说,大多数电子商务网站都需要一个折扣模块来增强其产品。我提出的一个简单包,对于实现折扣非常有帮助。此模块的核心功能是确定折扣是否适用,然后应用它。在此包中,我们定义了两种方法:一种用于检查折扣是否适用,另一种用于应用折扣。

为确保折扣的有效性,我们包含了基本的验证。这些验证包括以下标准:

  • 检查折扣是否当前有效。
  • 验证订单是否满足折扣的最低数量要求。
  • 确认订单是否满足设定的最低金额门槛。
  • 限制特定用户使用折扣券的次数。

通过这些验证,我们可以确保只有在满足指定条件时才应用折扣。此包为将折扣模块集成到电子商务网站提供了一个坚实的基础,使实现过程更加顺畅。

安装

composer require immera/ecom-discount

使用

安装完成后,您将可以使用 Immera\EcomDiscount\Discount 类,您可以使用它与laravel应用解析器一起使用,例如

$discount = app(Immera\EcomDiscount\Discount::class)

来实例化折扣。现在,这个 $discount 将有两个方法:

  • check(string $code, DiscountableCart $cart, DiscounteeUser $user)
  • consume(string $code, DiscountableOrder $order, DiscounteeUser $user)

在使用此包之前,您需要了解一些术语。

string $code - 这将是折扣券代码,我们将用它来识别单个折扣。

DiscountableCart $cart - 这个 DiscountableCart 将是一个接口,因此您需要传递一个实现了此接口的类的对象。

DiscountableCart 接口需要以下方法

  • getQuantity() 应返回订单中的商品数量
  • getAmount() 返回订单的最终总金额。

DiscountableOrder $order 这个 DiscountableOrder 也是一个接口,因此您需要传递一个实现了此接口的类的对象。

DiscountableOrder 接口需要 DiscountableCart 的所有方法,并且还需要以下方法

  • getId() 返回订单的id
  • useDiscount(DiscountCoupon $discount) 这里您需要更新订单,以考虑它使用了传递给参数的此折扣,这样您就可以在特定订单上使用折扣后执行一些操作。