kakaprodo/system-analytic

一个简化了基于数据库数据的Laravel系统分析开发的包

v1.2.2 2024-02-20 13:52 UTC

README

一个简化了基于您数据库中的数据的系统分析实现的Laravel包

use Kakaprodo\SystemAnalytic\AnalyticGate;

AnalyticGate::process([
    'analytic_type' => 'new-user-bar-chart',
    'scope_type' => 'this_week',// last_week, last_year,last_month,range_date, range_year ...
]);

1. 前提条件

  • php >= 7
  • kakaprodo/custom-data 包

2. 安装

 composer require kakaprodo/system-analytic

3. 发布骨架

  • 配置文件

    php artisan system-analytic:config

    上述命令将在配置文件夹中创建一个名为 system-analytic.php 的配置文件。

  • 骨架文件

    在此阶段,您可以打开配置文件夹中的 system-analytic.php 文件。从那里您可以查看所有设置,并根据您的需求进行自定义。然后运行以下命令创建分析 Hub

    php artisan system-analytic:install

运行上述命令后,将在您的 app/Http 文件夹(默认)和 app/Http/Requests 文件夹中创建一个新的文件夹。在下一节中,您将发现这些文件中将发生哪些神奇的事情。穿上您的鞋子吧 🤪

4. 您的第一个分析类(处理器)

1. 创建处理器

要生成分析类,您需要运行以下命令

php artisan system-analytic:handler NewUserBarChart --bar-chart

以下处理器将被创建,现在让我们解释一下

class NewUserBarChart extends BlockChart
{
    protected function boot()
    {
    }

    protected function query()
    {
        return DB::table('example')
    }

    protected function result(LazyCollection $groupedResult): AnalyticResponse
    {
        return $this->response($groupedResult->all());
    }
}

如您所见,我们有三个魔法方法和非常重要需要理解的方法

  • boot: 您可以使用此方法作为处理器的构造函数
  • query: 您的类的核心,此方法将返回基于请求范围过滤数据时将使用的值。
  • result: 将返回所有过滤器都应用过后的数据,并根据处理器的类型(柱状图)进行格式化。

2. 在处理器中定义基本查询

现在我们有了处理器,让我们给它一个意义,使其能够返回系统新用户的柱状图数据

class NewUserBarChart extends BlockChart
{
    protected $scopeColumn = "users.created_at";

    protected $groupBy = "created_at";

    protected function boot()
    {
    }

    protected function query()
    {
        return DB::table('users')->orderBy('id');
    }

    protected function result(LazyCollection $groupedUsersByCreatedAt): AnalyticResponse
    {
        $result = $groupedUsersByCreatedAt->map(function ($users) {
            return $users->count();
        });

        return $this->response($result->all());
    }
}

现在我们有了返回每个日期新用户数量的处理器。请注意,您可以对查询进行任何选择的逻辑,它将正常工作。

3. 注册处理器类

现在您已经准备好要使用的处理器。要注册您的处理器,您需要打开 AnalyticHandlerRegister 类,并在 handlers 方法下注册它。您将在我们早期在本文档中创建的分析骨架文件夹中看到此类。

class AnalyticHandlerRegister extends AnalyticHandlerRegisterBase
{
    /**
     * register a key value array of your handlers,
     * where the key is the analytic_type and the value
     * is the actual handler
     */
    public static function handlers(): array
    {
        return [
            NewUserBarChart::type() => NewUserBarChart::class,
        ];
    }
}

您可以看到,我们使用了 NewUserBarChart::type()type 方法将自动返回您的处理器类名称的大写形式。因此,如果您认为您将拥有多个具有相同名称的处理器,那么您可以在 NewUserBarChart::type() 的位置指定您自己的名称。

3. 使用处理器类

现在要调用处理器,我们将使用 AnalyticGate 类和您的处理器已注册的名称。请注意,AnalyticGate 是所有已注册处理器的入口。

use Kakaprodo\SystemAnalytic\AnalyticGate;

AnalyticGate::process([
    'analytic_type' => 'new-user-bar-chart',// NewUserBarChart::type()
    'scope_type' => 'this_week',// last_week, last_year,last_month ...
]);

非常简单,对吧 ???🤪🤪🤪🤪🤪🤪🤪!!!

现在,从上述代码中,我们只使用了 AnalyticGate 类支持的一小部分选项。这里还有其他您可以使用的选项

 $options = [
    'scope_value' => date based on the scope_type,
    'scope_from_date' => date or dateTime based on your need,
    'scope_to_date' => date or dateTime based on your need,
    'search_value' => string or Array,
    'should_export' => Bool,
    'file_type' => string between [csv,xlsx],
    'selected_option' => string,
    'should_clear_cache' => Bool
 ];

现在我知道,您可能想知道这个家伙为什么不完成文档。😜伙计,我无法把所有东西都放在这里,但请相信我,我正在编写完整的文档,一旦完成,您将是第一个知道的人。现在击掌 🖐✋🏾。