ashrafi/laravel-wallet

v0.1 2021-06-13 15:48 UTC

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
添加新的交易类型

每个交易可以单独的表来存储相关交易数据并验证相关数据,如果有的话

  1. 将您的新的类型添加到 transaction_types 表中。
  2. 为它创建新的 model/class 并实现 iRelatedTransactionTypeValidate 类以验证交易数据,并实现 iRelatedTransactionTypeCreateRecord 以将交易数据插入到您的表中。
  3. 将新类型添加到 wallet_manager.transaction_types.types 配置文件中。

重要交易类型

  1. init:此类型已定义并用于创建具有初始余额的新钱包。
  2. transfer:此类型已定义并用于将金额从一个钱包转移到另一个钱包。
  3. cash:此类型已定义并用于对现金金额进行充值或提现,而不需要任何额外数据。我们建议您定义一个新的类型来处理充值/提现交易,以便存储相关数据