sashagm/money

Laravel Transfer Package

1.7.1 2024-09-11 18:41 UTC

This package is auto-updated.

Last update: 2024-12-11 19:17:45 UTC


README

Laravel Logo

Total Downloads Latest Stable Version License Code size Code size

PHP Version Laravel Version

Laravel Transfer Package

Наш пакет предоставляет много функциональный компонент для вашего Laravel приложения. Который может быть полезным для приложений где необходимо добавить возможность использования валютного баланса пользователя.

Основной функционал:

  • Баланс пользователя
  • Переводы между пользователями
  • Ежедневный бонус
  • Кастомные бонусы

Оглавление:

Требования

Основные требования для установки и корректной работы:

  • PHP >= 8.0
  • Laravel >= 10.x || 11.x
  • Composer >= 2.4.x

Установка

Для установки пакета необходимо выполнить команды:

  • composer require sashagm/money
  • php artisan money:install

Использование

Конфигурация

Вы можете изменить таблицы и модели, используемые для хранения пользователей и переводов, в конфигурационном файле config/money.php. Здесь показаны все настройки и описание параметров.

    'admin_prefix'              => '',          // Префикс маршрутов
    'user_table'                => 'users',     // Пользовательская таблица
    'money_colum'               => 'money',     // Поле монет в пользовательской таблице
    'after_colum'               => 'password',  // После какого поля добавить поле валюты в пользовательской таблице

    'wallet'                    => [
        'code'                  => 'RUB',       // Код валюты
        'name'                  => 'руб',       // Имя валютиы
        'icon'                  => 'icon',      // Иконка валюты ( можно ввести html, svg, icons )
    ],

    'transfer'                  => [
        'active_send'           =>  true,  // Разрешить переводы
        'active_abort'          =>  true,  // Разрешить отмену
        'free_transfer'         =>  0.1,   // Коммиссия при переводе
        'min_trade'             =>  0.01,   // Минимальная сумма на перевод
        'abort_limit'           =>  false,  // Разрешить или Отменить ограничение отмены перевода
        'abort_time'            =>  24,     // Время (в часах) после которого нельзя отменить перевод
        'abort_clock'           => 'часов',  //
        'free_abort'            =>  true,   // Разрешить или Отменить комииссию для отмены
        'free_abort_transfer'   =>  0.1,    // Коммиссия при отмене переводе
    ],

    'check'                     => [
        'active'                => true, // Включить или отключить проверку прав
        'guard'                 => 'web',  // Под каким гардам будем работать
        'save_colum'            => 'id',   // По какому полю будем искать для группы/роли
        'save_value'            => [
            2, 3
        ],                              // Укажите массив с данными
        'abort_value'           => [
            3
        ],                              // Укажите массив с данными
        'bonus_value'           => [
            3
        ],                              // Укажите массив с данными
    ],

    'bonus'                     => [

        'active'                => true,   // Разрешить или Отменить получение бонуса
        'min'                   => 100,    // Минимальная сумма (100 = 1.00)
        'max'                   => 10099,  // Максимальная сумма (10099 = 100.99)
        'nullable'              => true,   // Разрешать начисление бонуса в нулевое значение с шансом 50% (0.00)
        'chance'                => 50,
    ],

    'custom'                    => [

        1                       => 'offline',

    ],

Ролевая зависимость

В конфигурационном файле config/money.php отвечает раздел check. Здесь вы можете настроить права доступа.

    'check'                     => [
        'active'                => true, // Включить или отключить проверку прав
        'guard'                 => 'web',  // Под каким гардам будем работать
        'save_colum'            => 'roles',   // По какому полю будем искать для группы/роли
        'save_value'            => [
            2, 3
        ],                              // Укажите массив с данными для перевода
        'abort_value'           => [
            3
        ],                              // Укажите массив с данными для отмены перевода
        'bonus_value'           => [
            2, 3
        ],                              // Укажите массив с данными для получения бонуса

    ],

В данном примере настроено так что активна проверка прав доступа. Искать пользователя будем через гард web.

Пользовательское поле по которому будем проверять roles.

Для переводов могут только пользователи с ролями 2,3 ( условно ВИП, Премиум )

Для отмены переводов могут только пользователи с ролями 3 ( условно Премиум )

Для получения бонуса могут только пользователи с ролями 2,3 ( условно ВИП, Премиум )

Виды прав доступа:

  • Переводы и возвраты Для переводов есть ролевая зависимость, вы можете назначить группу/роль для доступа к данному модулю.
  • Получение бонуса Для получения бонусов есть ролевая зависимость, вы можете назначить группу/роль для доступа к данному модулю.

Получение бонуса

Мы добавили возможность выдавать нашим пользователям ежедневный бонус в ввиде рандомного баланса.

В конфигурационном файле config/money.php отвечает раздел bonus. Здесь вы можете настроить получение бонуса.

    'bonus'                     => [

        'active'                => true,   // Разрешить или Отменить получение бонуса
        'min'                   => 100,    // Минимальная сумма (100 = 1.00)
        'max'                   => 10099,  // Максимальная сумма (10099 = 100.99)
        'nullable'              => true,   // Разрешать начисление бонуса в нулевое значение с шансом 50% (0.00)
        'chance'                => 50,
    ],

Кастомные бонусы

Дополнительные возможности

Наш пакет предоставляет ряд дополнительных возможностей, которые могут быть полезны при работе с темами:

  • php artisan money:install - Данная команда установит все необходимые компоненты пакета.
  • php artisan money:give {--u= : User ID or name} {--m= : Amount of money} - Данная команда выполнит пополнение счёта пользователя.
  • php artisan money:pay {--u= : User ID or email to deduct from} {--t= : User ID or email to transfer to} {--m= : Amount of money} - Данная команда выполнит простой перевод счёта пользователя на другой аккаунт пользователя.
  • php artisan money:transfer {--i= : Transfer ID to display} {--u= : Field name for user search (name, nickname, email)} - Данная команда выведет информацию о переводе.
  • php artisan money:send {--u= : User ID to send money from} {--t= : User ID to send money to} {--m= : Amount of money to send} - Данная команда отправит деньги от одного пользователя другому с учётом коммиссиями.
  • php artisan money:abort {--i= : Transfer ID to abort} - Данная команда отменит перевод и верните валюту обратно отправителю.
  • php artisan money:status {--i= : Transfer ID} {--s= : Status (0 or 1)} - Данная команда изменит статус перевода.

Тестирование

Для проверки работоспособности можно выполнить специальную команду:

  • ./vendor/bin/phpunit --configuration phpunit.xml

Лицензия

Laravel Transfer Package - это программное обеспечение с открытым исходным кодом, лицензированное по MIT license.