一个用于laravel项目的推荐系统。

1.3.0 2019-02-23 23:40 UTC

This package is auto-updated.

Last update: 2024-09-24 12:11:34 UTC


README

Latest Version on Packagist Software License Total Downloads

一个简单的推荐系统,可以为不同的用户提供不同的程序。

这个包是基于教程制作的,作者是Damir Miladinov,我对其做了一些小的修改,对此我表示感激。

安装

通过Composer

$ composer require pdazcom/laravel-referrals

然后在 config/app.php 中添加服务提供者和外观别名

'providers' => [
    ...
    Pdazcom\Referrals\Providers\ReferralsServiceProvider::class,
    ...
];

使用

首先需要运行

php artisan vendor:publish --provider='Pdazcom\Referrals\Providers\ReferralsServiceProvider' 

然后根据需要更改新迁移并运行 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
    event(new UserReferred(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']);

在配置中添加关联 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]);

最后在代码的任何位置触发奖励事件

event(Pdazcom\Referrals\Events\ReferralCase(['example'], $referralUser, $rewardObject))

从这一点开始,您需要的所有推荐操作都将在奖励类中的代码逻辑中以招募用户的方式获得奖励。

创建多个计划和它们的奖励类。享受吧!

附加内容

如果您想列出给定推荐链接的所有用户,只需使用

$referralLink->referredUsers()

安全

如果您发现任何与安全相关的问题,请通过电子邮件 kostya.dn@gmail.com 而不是使用问题跟踪器。

致谢

许可证

MIT许可证(MIT)。请参阅许可证文件以获取更多信息。