ashrafi / laravel-wallet
Laravel 钱包管理器。
Requires
- php: >=7.1
- illuminate/database: ^5.0|^6.0|^7.0|^8.0
- illuminate/support: ^5.0|^6.0|^7.0|^8.0
This package is not auto-updated.
Last update: 2024-09-16 07:00:15 UTC
README
钱包管理器可以管理用户财务,具有多账户和钱包功能。
用户可以为应用程序的任何目的拥有多个账户。对于交易应用程序,您可以创建演示账户、真实账户等。每个账户都可以拥有多个钱包来处理您的货币。
要求
php: >=7.1
"laravel/framework": "^5.0|^6.0|^7.0|^8.0"
安装
composer require ashrafi/laravel-wallet:^v0.1
如果您想发布配置,可以运行以下命令:
php artisan vendor:publish --tag=wallet-manager-config
发布种子文件
php artisan vendor:publish --tag=wallet-manager-seeder
将种子文件添加到 DatabaseSeeder.php
(new CurrencySeeder())->run(); (new TransactionTypeSeeder())->run();
注意:我们使用 \App\User
或 \App\Models\User
类将表与用户相关联,您可以将它绑定到实现 iUser::class 的其他类,并在 AppServiceProvider
中绑定。
接下来,您需要运行迁移和 db:seed 来创建数据库表和种子文件
php artisan migrate php artisan db:seed
注意:此包将与 Laravel 自动加载,您不需要将 \Ashrafi\WalletManager\ServiceProvider::class
添加到您的 bootstrap。
结构
-
外观:此包使用外观模式进行模型操作,您可以扩展和自定义它们。要扩展模型,您需要将以下代码添加到您的
AppServiceProvider
use Ashrafi\WalletManager\Models\Wallet; //YOUR CODES public function register(){ //YOUR CODES //Bind other User class if you don't use \App\User class for authentication $this->app->bind(iUser::class, function(){ return new {YourExtendedClass}; }); $this->app->extend(Wallet::class, function(){ return new {YourExtendedClass}; }); }
-
命令:命令列表位于 src/Commands 中,您需要使用这些命令来使用此包的功能!
重要:不要直接使用 WalletManager 模型,而应仅使用它们的 facades:WalletModel, AccountModel, CurrencyModel,...
-
事件
该包具有 WalletEvent 和 AccountEvent,以处理您需要的任何操作。
-
WalletCreating
:在创建钱包并在验证输入之后触发。 -
WalletCreated
:在创建钱包后触发。 -
AccountCreating
:在创建账户并在验证输入后触发。 -
AccountCreated
:在创建账户后触发。
-
用法
示例列表位于 samples 文件夹中,但您可以根据以下顺序(如 'transfer' 等)遵循它们。
-
创建账户:此命令将为给定的 user_id 创建一个具有多个钱包的账户。例如:您可以为财务或评分目的创建一个账户!
-
更改钱包余额:此命令将向/从钱包充值/提现。您可以创建
TransactionAmount
对象,该对象保持 +/- 数量、类型和状态。 -
批准交易:此命令将批准交易并重新计算钱包余额。
值对象
- TransactionAmount
添加新的交易类型
每个交易可以单独的表来存储相关交易数据并验证相关数据,如果有的话
- 将您的新的类型添加到 transaction_types 表中。
- 为它创建新的
model/class
并实现iRelatedTransactionTypeValidate
类以验证交易数据,并实现iRelatedTransactionTypeCreateRecord
以将交易数据插入到您的表中。 - 将新类型添加到
wallet_manager.transaction_types.types
配置文件中。
重要交易类型
init
:此类型已定义并用于创建具有初始余额的新钱包。transfer
:此类型已定义并用于将金额从一个钱包转移到另一个钱包。cash
:此类型已定义并用于对现金金额进行充值或提现,而不需要任何额外数据。我们建议您定义一个新的类型来处理充值/提现交易,以便存储相关数据