pdazcom / laravel-referrals
为laravel项目提供的推荐系统。
Requires
- laravel/framework: ^9|^10
Requires (Dev)
- orchestra/testbench: ^7.25
This package is not auto-updated.
Last update: 2024-09-16 12:57:32 UTC
README
一个简单的推荐系统,可以分配不同的方案给不同的用户。
该包是基于教程创建的,作者为Damir Miladinov,我对他的一些小改动表示感谢。
安装
添加依赖
通过Composer
$ composer require pdazcom/laravel-referrals
然后在 config/app.php 中添加 service-provider 和 facade 别名
'providers' => [
...
Pdazcom\Referrals\Providers\ReferralsServiceProvider::class,
...
];
配置
首先你需要运行
php artisan vendor:publish --tag=referrals-config
来创建你 config 文件夹中的 referrals.php 文件。
迁移
可选:如果你想修改迁移文件,你也需要运行
php artisan vendor:publish --tag=referrals-migrations然后更改新的迁移。
运行 php artisan migrate 在数据库中创建表。
中间件
在 Http/Kernel.php 中将中间件添加到 web 组
'web' => [
...
\Pdazcom\Referrals\Http\Middleware\StoreReferralCode::class,
],
将 Pdazcom\Referrals\Traits\ReferralsMember 特性添加到你的 Users 模型
class User extends Authenticatable {
use ReferralsMember;
...
}
使用方法
添加新的推荐事件
然后在 Http/Controllers/Auth/RegisterController.php 中添加事件调度器
...
use Pdazcom\Referrals\Events\UserReferred;
...
// overwrite registered function
public function registered(Request $request)
{
// dispatch user referred event here
UserReferred::dispatch(request()->cookie('ref'), $user);
}
从这一点开始,所有的推荐链接都会将新用户作为推荐者附加到这些链接的用户。
创建推荐方案
然后你需要创建数据库中的推荐方案,并通过 referral_program_id 字段将其附加到用户
php artisan tinker
Pdazcom\Referrals\Models\ReferralProgram::create(['name'=>'example', 'title' => 'Example Program', 'description' => 'Laravel Referrals made easy thanks to laravel-referrals package based on an article by Damir Miladinov,', 'uri' => 'register']);
将关联添加到 config 的 referrals.programs
...
'example' => App\ReferralPrograms\ExampleProgram.php
并为推荐方案创建奖励类 App\ReferralPrograms\ExampleProgram.php
<?php
namespace App\ReferralPrograms;
use Pdazcom\Referrals\Programs\AbstractProgram;
class ExampleProgram extends AbstractProgram {
const ROYALTY_PERCENT = 30;
/**
* It can be anything that will allow you to calculate the reward.
*
* @param $rewardObject
*/
public function reward($rewardObject)
{
$this->recruitUser->balance = $this->recruitUser->balance + $rewardObject * (self::ROYALTY_PERCENT/100);
$this->recruitUser->save();
}
}
创建推荐链接
php artisan tinker
Pdazcom\Referrals\Models\ReferralLink::create(['user_id' => 1, 'referral_program_id' => 1]);
最后在任何代码位置触发奖励事件
use Pdazcom\Referrals\Events\ReferralCase;
...
ReferralCase::dispatch('example', $referralUser, $rewardObject);
从这一点开始,所有需要的推荐操作都将通过奖励类中的代码逻辑招募用户。
创建多个方案及其奖励类。享受吧!
奖励内容
如果你想列出给定推荐链接的所有用户,只需使用
$referralLink->referredUsers()
安全
如果你发现任何与安全相关的问题,请通过电子邮件 kostya.dn@gmail.com 而不是使用问题跟踪器。
鸣谢
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。