2017 © Pedro Peláez
 

yii2-extension yii2-partnership

its a partnerships module

image

komer45/yii2-partnership

its a partnerships module

  • Saturday, February 4, 2017
  • by komer45
  • Repository
  • 2 Watchers
  • 1 Stars
  • 45 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 1 Versions
  • 0 % Grown

The README.md

Yii2-partnership

Это модуль для реализации партнерсской программы. Пользователь, перешедший с сайта-партнера, идентифицируется - если он не зарегестрирован в системе, то при переходе он фиксируется за партнером, который привел его. Затам отслеживается его активность по заказам - после завершения заказа партнеру отчисляется определенный процент. По достижению определенной суммы отчислений по заказам клиента партнер может забрать свою выплату. Для идентификации партнера в системе необходимо: 1. Чтобы он был в таблице user, 2. Чтобы тот пользователь таблицы user, который должен быть партнером должен быть занесен в таблицу ps_partner, 3. Для идентификации пользователя как партнера в таблице ps_partner в поле partner_id должно быть занесено значение поля id таблицы user соответствующего пользователя., (*1)

Функционал:, (*2)

  • Регистрация переходов
  • Привязка пришедшего посетителя к партнеру, который привел посетителя на ресурс.
  • Начисление процентов по совершенным (пришедшим пользователем) заказам партнеру, который привел пользователя.
  • Управление отчисляемыми процентами

Установка

Выполнить команду, (*3)

php composer require komer45/yii2-partnership "*"

Или добавить в composer.json, (*4)

"komer45/yii2-partnership": "*",

И выполнить, (*5)

php composer update

Далее, мигрируем базу:, (*6)

php yii migrate --migrationPath=vendor/komer45/yii2-partnership/migrations

Подключение и настройка

Для пользования необходимо подключить модуль в конфиге:, (*7)

```'php' 'modules' => [ 'partnership' => [ 'class' => 'komer45\partnership\Module', 'adminRoles' => ['superadmin', 'administrator'], ], //... ], (*8)

Для доступа к компоненту в том же конфиге необходимо подключить обращение:
```'php'
    'components' => [
    ...
        'partnership' => [
            'class' => 'komer45\partnership\Partnership'
        ],
    ...
    ]

Для того, чтобы подписаться на совершение покупки необходимо в конфиге прописать следующий код для модуля order:, (*9)

<?php
...
'order' => [
        'class' => 'pistol88\order\Module',
        ///...
        'on create' =>function($event) {
            $model = new \komer45\partnership\models\OrderHistory;
            $tmp =  strval(Yii::$app->request->cookies['tmp_user_id']);
            if (!Yii::$app->user->isGuest){             //сли пользователь зарегистрирован
                $model->user_id = Yii::$app->user->id;
                $follow = \komer45\partnership\models\Follow::find()->where(['user_id' => $model->user_id])->one();
                $part   = \komer45\partnership\models\Follow::find()->where(['user_id' => Yii::$app->user->id])->one();
            } else {                                    //иначе - если все-таки гость
                $model->tmp_user_id = $tmp;
                $follow = \komer45\partnership\models\Follow::find()->where(['tmp_user_id' => $model->tmp_user_id])->one();
                $part   = \komer45\partnership\models\Follow::find()->where(['tmp_user_id' => $tmp])->one();
            }
            if($part){
                $partner = \komer45\partnership\models\Partner::find()->where(['code' => $part->partner])->one(); //находим партнера по коду
                $model->partner_id = $partner->id;
            }
            $model->sum = $event->model->cost;
            $model->date = date('Y-m-d');
            $model->order_id = $event->model->id;
            if($follow){
                $model->follow_id = strval($follow->id);    //сюда нужно записать id таблицы ps_follow
            }
                $forperc = \komer45\partnership\models\Setting::find()->all();
                if($forperc){
                    foreach ($forperc as $search)
                    {
                        if ($model->sum >= $search->sum)
                        {
                            $percent = (($model->sum)/100*$search->percent);
                            break;
                        }
                    }
                    $model->recoil = $percent;
                }
                $model->status = 'new';
            if ($model->validate())
            {
                $model->save();
            }   else {
                    //die('Uh-oh something in config went wrong');
                }
        },
        //..
]

Так жe для перевода пользователя из незарегистрированного в зарегистрированного в контроллере user (\common\models\user) необходимо дописать следующий код в методе afterSignup(array $profileData = []):, (*10)

where(['tmp_user_id' => Yii::$app->request->cookies['tmp_user_id']])->one();
    $reFollow->tmp_user_id = NULL;
    $reFollow->user_id = $this->getId();
    if ($reFollow->validate())
    {
        $reFollow->save();
    }
    //...
}
```

Для того, чтобы совершить заказ (клиент), запросить выплату (партнер), выплатить (администратор) можно подключить виджеты:

```php

=OrderWidget::widget();?>
=PartnerWidget::widget();?>
=AdminWidget::widget();?>
=SettingWidget::widget();?>
=PartnerOrdersWidget::widget();?>

Если необходимо связать данный модуль с модулем кошелька (komer45/yii2-balance), можно сделать подписку на событие. В конфиге модифицируем подключение partnership в разделе modules:, (*11)

 'partnership' => [
    ...
            'on makePayment' => function($event){
                $model = $event->model;
                $userId = Yii::$app->Partnership->getUserByPartnerId($model->partner_id);
                $balance = Yii::$app->balance->getUserScore($userId);
                if ($balance){
                    Yii::$app->balance->addTransaction($balance->id, 'in', $model->sum, 'partnership rewads');
                } else return false;
            }
  ],

Если модель подключаемого User не соответствует 'common\models\User' то ее необходимо задать в Модуле(Module.php) изменив переменную $userModule;, (*12)

The Versions

04/02 2017

dev-master

9999999-dev https://github.com/komer45/yii2-partnership

its a partnerships module

  Sources   Download

BSD-3-Clause

The Requires

 

The Development Requires

by Komarov Vlad

yii2 module yii 2 application komer45 partnership