beratkara/promocodes

Laravel 5 的促销代码生成器

8.1.3 2021-06-06 15:07 UTC

README

Packagist Packagist license Scrutinizer Code Quality Build Status

Laravel 5.* 的促销代码生成器。努力成为本类别最佳包。欢迎加入这场盛会,给我一些建议 🎉 并发起 pull request。

laravel-promocodes

目录

更新内容

安装

通过 Composer 安装此包

$ composer require zgabievi/promocodes

如果您正在使用 Laravel 5.5 或更高版本,则安装已完成。否则,请按照以下步骤操作。

打开 config/app.php 并按照以下步骤操作

找到 providers 数组并添加我们的服务提供者。

'providers' => [
    // ...
    Gabievi\Promocodes\PromocodesServiceProvider::class
],

找到 aliases 数组并添加我们的外观。

'aliases' => [
    // ...
    'Promocodes' => Gabievi\Promocodes\Facades\Promocodes::class
],

配置

使用 Artisan 命令发布配置和迁移文件

$ php artisan vendor:publish

要创建数据库中的 promocodes 表,请运行

$ php artisan migrate

配置参数有良好的文档。这里不需要描述每个参数。

检查 config/promocodes.php 并阅读那里的注释,如果您需要的话。

使用

生成尽可能多的代码,并输出它们而不保存到数据库。

您将返回代码数组

Promocodes::output($amount = 1);

参数

创建尽可能多的代码。设置奖励(金额)。

附加数组形式的附加数据。指定这些代码应存活多少天。

默认生成的代码将是 multipass(多个用户将能够一次性使用此代码)。

它们将被保存到数据库中,您将返回它们的集合。

Promocodes::create($amount = 1, $reward = null, array $data = [], $expires_in = null, $quantity = null, $is_disposable = false);

如果您想创建只能使用一次的代码,这里有一个方法供您使用。

Promocodes::createDisposable($amount = 1, $reward = null, array $data = [], $expires_in = null, $quantity = null);

参数

检查给定的代码是否存在、是否可用以及尚未过期。

如果有效,则返回 Promocode 对象,否则返回 false

Promocodes::check($code);

参数

如果您想检查用户是否第二次尝试使用促销代码,可以调用 Promocodes::isSecondUsageAttempt 并传递 Promocode 对象作为参数。作为回答,您将得到布尔值

兑换或应用代码。兑换是应用方法的别名。

用户必须认证才能兑换代码,否则此方法将抛出异常(\Gabievi\Promocodes\Exceptions\UnauthenticatedException)。

如果认证用户尝试两次应用代码,它将抛出异常(\Gabievi\Promocodes\Exceptions\AlreadyUsedException

如果应用,则返回 Promocode 对象,否则返回 false

Promocodes::redeem($code);
Promocodes::apply($code);

参数

获取有效促销代码的集合。

Promocodes::all();

您可以通过调用 disable 函数立即使代码过期。返回更新的布尔状态。

Promocodes::disable($code);

参数

如果您想删除过期的或不可用的代码,可以删除它们。

此方法将从数据库中删除冗余代码及其与用户的关联。

Promocodes::clearRedundant();

促销代码可以与用户相关联

如果您想使用用户关系,请打开 app/User.php 并将其设置为 Rewardable,如示例所示

namespace App;

use Illuminate\Notifications\Notifiable;
use Gabievi\Promocodes\Traits\Rewardable;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    use Notifiable, Rewardable;

    // ...
}

兑换或应用代码相同。《redeemCode》是《applyCode》的别名

传递您希望当前用户应用的促销代码。

User::redeemCode($code, $callback = null);
User::applyCode($code, $callback = null);

示例(回调的使用)

$redeemMessage = $user->redeemCode('ABCD-DCBA', function ($promocode) use ($user) {
    return 'Congratulations, ' . $user->name . '! We have added ' . $promocode->reward . ' points on your account';
});

// Congratulations, Zura! We have added 10 points on your account

如何使用附加数据?

  1. 创建过程
Promocodes::create(1, 25, ['foo' => 'bar', 'baz' => 'qux']);
  1. 获取数据回传
Promocodes::redeem('ABC-DEF', function($promocode) {
    echo $promocode->data['foo'];
});

// bar

User::redeemCode('ABC-DEF', function($promocode) {
    echo $promocode->data['foo'];
});

// bar

测试

最后,它来了。我编写了一些测试来保持此包健康和稳定

laravel-promocodes tests

许可证

laravel-promocodes 在 MIT 许可证 下授权。