pdazcom/laravel-referrals

为laravel项目提供的推荐系统。

1.1.1 2023-09-04 08:06 UTC

This package is not auto-updated.

Last update: 2024-09-16 12:57:32 UTC


README

Latest Version on Packagist Software License Total Downloads

一个简单的推荐系统,可以分配不同的方案给不同的用户。

该包是基于教程创建的,作者为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)。有关更多信息,请参阅许可证文件