abhibunt / promocodes
Laravel 9促销代码生成器
Requires
- php: ^7.2||^8.0
- doctrine/dbal: ^2.10||^3.0
- laravel/framework: ~5.7||~5.8||~6.0||~7.0||~8.0||~9.0
Requires (Dev)
- orchestra/testbench: ~4.0
- phpunit/phpunit: ^8.3
This package is not auto-updated.
Last update: 2024-10-03 12:25:12 UTC
README
Laravel 5.*的促销代码生成器。致力于制作本类别中最好的包。欢迎加入这个派对,给我一些建议 🎉 并提交 pull request。
目录
新功能
安装
通过 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
要创建数据库中促销代码的表,请运行
$ 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
如何使用附加数据?
- 创建过程
Promocodes::create(1, 25, ['foo' => 'bar', 'baz' => 'qux']);
- 获取数据回
Promocodes::redeem('ABC-DEF', function($promocode) { echo $promocode->data['foo']; }); // bar
或
User::redeemCode('ABC-DEF', function($promocode) { echo $promocode->data['foo']; }); // bar
测试
终于来了。我已经编写了一些测试来保持这个包的健康和稳定
许可
laravel-promocodes 采用了 MIT 许可证。