autepos/discount

灵活的折扣接口

dev-main 2023-04-02 13:54 UTC

This package is auto-updated.

Last update: 2024-10-01 00:07:18 UTC


README

这是一个PHP的零依赖灵活折扣库。它通常用于提供产品折扣,但也可以用于任何需要灵活性的折扣。

特性

  • 零依赖
  • 灵活折扣
  • 可扩展
  • 支持多种折扣类型
    • 百分比
    • 固定金额
    • 买一送一 / 购买N件赠送M件 / 以N件的价格购买M件
    • 以特定价格购买N件
  • 折扣叠加:任何类型/多个折扣可以应用于单个/多个商品。无限制。
  • 限制折扣
    • 到特定商品
    • 到最低购买金额
    • 到最低数量
  • 等等。

安装

使用以下命令安装最新版本:

composer require autepos/discount

基本用法

use Autepos\Discount\Processors\LinearDiscountProcessor;
use Autepos\Discount\Contracts\DiscountableDevice;
use Autepos\Discount\Contracts\DiscountInstrument;

class Order implements DiscountableDevice
{
    //...
}

class PromotionCode implements DiscountInstrument
{
    //...
}


$discountableDevice = new Order();
$discountInstrument = new PromotionCode();

$processor = new LinearDiscountProcessor();
$processor->addDiscountableDevice($discountableDevice)
          ->addDiscountInstrument($discountInstrument);
$discountLineList = $processor->calculate();

// Get the discount amount
$discountAmount = $discountLineList->amount();

// Persist the discount
$discountLineList->redeem();

添加自定义折扣处理器

use Autepos\Discount\Processors\Contracts\DiscountProcessor;

class CustomDiscountProcessor implements DiscountProcessor
{
    public function getProcessor(): string
    {
        return 'custom';
    }

    //...
}