48 lines
1.1 KiB
PHP
48 lines
1.1 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Aether;
|
|
|
|
use Aether\Exception\BusinessException;
|
|
use Hyperf\DbConnection\Db;
|
|
use Hyperf\Di\Annotation\Inject;
|
|
use Hyperf\Logger\LoggerFactory;
|
|
use Psr\Log\LoggerInterface;
|
|
use Throwable;
|
|
|
|
abstract class AetherService
|
|
{
|
|
#[Inject]
|
|
protected LoggerFactory $loggerFactory;
|
|
|
|
/**
|
|
* 获取当前服务日志器.
|
|
*/
|
|
protected function logger(): LoggerInterface
|
|
{
|
|
$className = substr(strrchr(static::class, '\\'), 1);
|
|
return $this->loggerFactory->get($className);
|
|
}
|
|
|
|
/**
|
|
* 事务处理.
|
|
* @throws Throwable
|
|
*/
|
|
protected function transaction(callable $callback)
|
|
{
|
|
return Db::transaction($callback);
|
|
}
|
|
|
|
/**
|
|
* 检查资源是否存在(不存在则抛出异常).
|
|
* @throws BusinessException
|
|
*/
|
|
protected function checkResourceExists(?object $resource, string $message = '资源不存在'): void
|
|
{
|
|
if (empty($resource)) {
|
|
throw new BusinessException($message, BusinessException::RESOURCE_NOT_FOUND);
|
|
}
|
|
}
|
|
}
|