Files
lgp-admin-plus-api/app/Enum/OssDriverEnum.php
2026-08-10 18:32:06 +08:00

113 lines
2.9 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
namespace App\Enum;
/**
* OSS 存储驱动枚举:管理端卡片展示与上传分发共用
*/
enum OssDriverEnum: string
{
case Local = 'local';
case Aliyun = 'aliyun';
case Qcloud = 'qcloud';
case Qiniu = 'qiniu';
case Huawei = 'huawei';
case Aws = 'aws';
case Minio = 'minio';
case Baidu = 'baidu';
/**
* 驱动编码(与库表 driver 一致)
*/
public function code(): string
{
return $this->value;
}
/**
* 中文展示名
*/
public function label(): string
{
return match ($this) {
self::Local => '本地存储',
self::Aliyun => '阿里云 OSS',
self::Qcloud => '腾讯云 COS',
self::Qiniu => '七牛云',
self::Huawei => '华为云 OBS',
self::Aws => 'AWS S3',
self::Minio => 'MinIO',
self::Baidu => '百度云 BOS',
};
}
/**
* 卡片说明文案
*/
public function description(): string
{
return match ($this) {
self::Local => '文件保存到应用服务器本地磁盘',
self::Aliyun => '阿里云对象存储 OSS',
self::Qcloud => '腾讯云对象存储 COS',
self::Qiniu => '七牛云对象存储 Kodo',
self::Huawei => '华为云对象存储 OBS',
self::Aws => '亚马逊 S3 对象存储',
self::Minio => 'S3 兼容的私有化对象存储',
self::Baidu => '百度智能云对象存储 BOS',
};
}
/**
* 前端卡片图标iconify
*/
public function icon(): string
{
return match ($this) {
self::Local => 'lucide:hard-drive',
self::Aliyun => 'simple-icons:alibabadotcom',
self::Qcloud => 'simple-icons:tencentqq',
self::Qiniu => 'lucide:cloud',
self::Huawei => 'simple-icons:huawei',
self::Aws => 'simple-icons:amazonaws',
self::Minio => 'simple-icons:minio',
self::Baidu => 'simple-icons:baidu',
};
}
/**
* 是否需要 AccessKey / SecretKey
*/
public function needsSecret(): bool
{
return $this !== self::Local;
}
/**
* 前端驱动选项列表(含图标,供卡片展示)
*/
public static function options(): array
{
$list = [];
foreach (self::cases() as $case) {
$list[] = [
'code' => $case->code(),
'name' => $case->label(),
'label' => $case->label(),
'description' => $case->description(),
'icon' => $case->icon(),
'needs_secret' => $case->needsSecret() ? 1 : 0,
];
}
return $list;
}
/**
* 校验驱动编码是否合法
*/
public static function isValid(string $code): bool
{
return self::tryFrom($code) !== null;
}
}