Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/sashagm/money

Laravel Transfer Package для Laravel +10.x
https://github.com/sashagm/money

auth laravel laravel-middleware laravel-package money pay payment payment-processing php phpunit user user-balance user-balance-bonus user-bonus

Last synced: about 2 months ago
JSON representation

Laravel Transfer Package для Laravel +10.x

Awesome Lists containing this project

README

        

Laravel Logo

Total Downloads
Latest Stable Version
License
Code size
Code size

[![PHP Version](https://img.shields.io/badge/PHP-%2B8-blue)](https://www.php.net/)
[![Laravel Version](https://img.shields.io/badge/Laravel-%2B10-red)](https://laravel.com/)

## 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`.
Здесь показаны все настройки и описание параметров.

```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`. Здесь вы можете настроить права доступа.

```php

'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`. Здесь вы можете настроить получение бонуса.

```php

'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](LICENSE.md).