This commit is contained in:
92
app/Service/QueueService.php
Normal file
92
app/Service/QueueService.php
Normal file
@ -0,0 +1,92 @@
|
||||
<?php
|
||||
/**
|
||||
* Author: ykxiao
|
||||
* Date: 2025/6/3
|
||||
* Time: 下午10:53
|
||||
* Description:
|
||||
*
|
||||
* (c) ykxiao <yk_9001@hotmail.com>
|
||||
*
|
||||
* This source file is subject to the MIT license that is bundled
|
||||
* with this source code in the file LICENSE.
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Service;
|
||||
|
||||
use App\Context\UserContext;
|
||||
use App\Job\ColumnConfigJob;
|
||||
use App\Job\OpLogsJob;
|
||||
use App\Job\RequestWriteLogsJob;
|
||||
use Hyperf\Amqp\Producer;
|
||||
use Hyperf\AsyncQueue\Driver\DriverFactory;
|
||||
use Hyperf\AsyncQueue\Driver\DriverInterface;
|
||||
use Hyperf\Di\Annotation\Inject;
|
||||
|
||||
class QueueService
|
||||
{
|
||||
// 存储配置参数
|
||||
protected array $params = [];
|
||||
|
||||
// 当前操作的函数名
|
||||
protected string $function = '';
|
||||
|
||||
// 队列驱动实例
|
||||
protected DriverInterface $driver;
|
||||
|
||||
// 生产者实例,用于发送消息
|
||||
#[Inject]
|
||||
protected Producer $producer;
|
||||
|
||||
/**
|
||||
* 构造函数,初始化队列服务。
|
||||
*
|
||||
* @param DriverFactory $driverFactory 驱动工厂,用于获取具体的队列驱动实例
|
||||
*/
|
||||
public function __construct(DriverFactory $driverFactory)
|
||||
{
|
||||
$this->driver = $driverFactory->get('whf');
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建队列任务并执行。
|
||||
*
|
||||
* @param array $params
|
||||
* @return QueueService
|
||||
*/
|
||||
public function make(array $params): static
|
||||
{
|
||||
// 将当前用户信息添加到参数中
|
||||
$params['user'] = UserContext::getCurrentUser();
|
||||
|
||||
$this->params = $params;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 将请求日志写入文件。
|
||||
*
|
||||
*/
|
||||
public function writeRequestLogs(): void
|
||||
{
|
||||
$this->driver->push(new RequestWriteLogsJob($this->params));
|
||||
}
|
||||
|
||||
/**
|
||||
* 列配置保存.
|
||||
*/
|
||||
public function saveColumnConfig(): void
|
||||
{
|
||||
$this->driver->push(new ColumnConfigJob($this->params));
|
||||
}
|
||||
|
||||
/**
|
||||
* 将操作日志推送到队列中.
|
||||
*/
|
||||
public function opLogs(): void
|
||||
{
|
||||
// 将操作日志封装为OpLogsJob任务,并推送到驱动器对应的队列中
|
||||
$this->driver->push(new OpLogsJob($this->params));
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user