调整搜索排版,以及添加阿里云OSS切换

mall
vine_liutk 2023-12-25 14:57:16 +08:00
parent 038427493c
commit 2872d54f6f
7 changed files with 238 additions and 51 deletions

View File

@ -29,22 +29,21 @@ class AdController extends AdminController
...$this->baseHeaderToolBar(),
])
->filter($this->baseFilter()->labelWidth('80px')->body([
amis()->TextControl('id', __('admin.ads.id'))
->size('md')
->placeholder(__('admin.id')),
amis()->TextControl('remark', __('admin.ads.remark'))
->size('md')
->placeholder(__('admin.ads.remark')),
Components::make()->parentControl(admin_url('api/keywords/tree-list?parent_name=banner_address&has_owner=0'), 'address', __('admin.ads.address'), 'name', 'key')
->size('md'),
amis()->InputDatetimeRange()->label(__('admin.ads.published_at'))->name('published_at'),
amis()->SelectControl('enable', __('admin.ads.is_enable'))
->options([
1=>'开启',0=>'关闭'
])
->size('md'),
amis()->InputDatetimeRange()->label(__('admin.created_at'))->name('created_at'),
amis()->GroupControl()->mode('horizontal')->body([
amis()->TextControl('id', __('admin.ads.id'))
->placeholder(__('admin.id')),
amis()->TextControl('remark', __('admin.ads.remark'))
->placeholder(__('admin.ads.remark')),
Components::make()->parentControl(admin_url('api/keywords/tree-list?parent_name=banner_address&has_owner=0'), 'address', __('admin.ads.address'), 'name', 'key'),
amis()->SelectControl('enable', __('admin.ads.is_enable'))
->options([
1=>'开启',0=>'关闭'
]),
]),
amis()->GroupControl()->mode('horizontal')->body([
amis()->InputDatetimeRange()->label(__('admin.ads.published_at'))->name('published_at'),
amis()->InputDatetimeRange()->label(__('admin.created_at'))->name('created_at'),
]),
]))
->columns([
amis()->TableColumn('id', __('admin.ads.id'))->width('50px')->sortable(),

View File

@ -22,30 +22,31 @@ class ArticleController extends AdminController
$this->createButton(),
...$this->baseHeaderToolBar(),
])
->filter($this->baseFilter()->labelWidth('80px')->body([
amis()->TextControl('id', __('admin.articles.id'))
->size('md')
->placeholder(__('admin.id')),
amis()->TextControl('title', __('admin.articles.title'))
->size('md')
->placeholder(__('admin.articles.title')),
Components::make()->parentControl(admin_url('api/keywords/tree-list?parent_name=article_category&has_owner=0'), 'category', __('admin.articles.category'), 'name', 'key')
->size('md'),
amis()->InputDatetimeRange()->label(__('admin.articles.published_at'))->name('published_at'),
Components::make()->keywordsTagControl('t_ids', __('admin.articles.tags'), 'article_tag')
->size('md'),
amis()->SelectControl('enable', __('admin.articles.is_enable'))
->filter($this->baseFilter()->body([
amis()->GroupControl()->mode('horizontal')->body([
amis()->TextControl('id', __('admin.articles.id'))
->placeholder(__('admin.id')),
amis()->TextControl('title', __('admin.articles.title'))
->placeholder(__('admin.articles.title')),
Components::make()->parentControl(admin_url('api/keywords/tree-list?parent_name=article_category&has_owner=0'), 'category', __('admin.articles.category'), 'name', 'key'),
Components::make()->keywordsTagControl('t_ids', __('admin.articles.tags'), 'article_tag'),
]),
amis()->GroupControl()->mode('horizontal')->body([
amis()->SelectControl('enable', __('admin.articles.is_enable'))
->columnRatio(3)
->options([
1=>'开启',0=>'关闭'
])
->size('md'),
amis()->SelectControl('recommend', __('admin.articles.is_recommend'))
]),
amis()->SelectControl('recommend', __('admin.articles.is_recommend'))
->columnRatio(3)
->options([
1=>'开启',0=>'关闭'
])
->size('md'),
amis()->InputDatetimeRange()->label(__('admin.created_at'))->name('created_at'),
]),
amis()->InputDatetimeRange()->label(__('admin.articles.published_at'))->name('published_at'),
]),
amis()->GroupControl()->mode('horizontal')->body([
amis()->InputDatetimeRange()->label(__('admin.created_at'))->name('created_at')->columnRatio(6),
]),
]))
->itemBadge([//行角标
'text' => __('admin.articles.is_recommend'),

View File

@ -2,6 +2,7 @@
namespace App\Admin\Controllers;
use Illuminate\Support\Arr;
use Illuminate\Http\Request;
use Slowlyo\OwlAdmin\Renderers\Tab;
use Slowlyo\OwlAdmin\Renderers\Tabs;
@ -15,7 +16,6 @@ class SettingController extends AdminController
public function index()
{
$page = $this->basePage()->body([
Alert::make()->showIcon(true)->body("此处内容仅供演示, 设置项无实际意义,实际开发中请根据实际情况进行修改。"),
$this->form(),
]);
@ -25,19 +25,23 @@ class SettingController extends AdminController
public function form()
{
return $this->baseForm(false)
->redirect('')
->redirect('')->labelWidth('200px')
->api($this->getStorePath())
->data(settings()->all())
->body(
Tabs::make()->tabs([
Tab::make()->title('基本设置')->body([
TextControl::make()->label('网站名称')->name('site_name'),
InputKV::make()->label('附加配置')->name('addition_config'),
]),
Tab::make()->title('上传设置')->body([
TextControl::make()->label('上传域名')->name('upload_domain'),
TextControl::make()->label('上传路径')->name('upload_path'),
]),
amis()->RadiosControl('upload_disk', '上传驱动')->options([
'public'=>'本地存储',
'oss' => '阿里云OSS',
])->value('public')->required(true),
amis()->TextControl('oss_config.access_key_id', '阿里云AccessKeyId')->required(true)->size('lg')->visibleOn('${upload_disk == "oss"}'),
amis()->TextControl('oss_config.access_key_secret', '阿里云AccessKeySecret')->required(true)->size('lg')->visibleOn('${upload_disk == "oss"}'),
amis()->TextControl('oss_config.bucket', '对象存储Bucket')->required(true)->size('lg')->visibleOn('${upload_disk == "oss"}')->remark('示例: my-bucket'),
amis()->TextControl('oss_config.endpoint', '对象存储endpoint')->required(true)->size('lg')->visibleOn('${upload_disk == "oss"}')->remark('示例: oss-cn-shanghai.aliyuncs.com'),
amis()->TextControl('oss_config.domain', '自有域名')->size('lg')->visibleOn('${upload_disk == "oss"}')->remark('填写即启用 示例: my-domain.com'),
amis()->SwitchControl('oss_config.use_ssl', '开启SSL')->value(false)->visibleOn('${upload_disk == "oss"}'),
]),
])
);
}
@ -45,12 +49,43 @@ class SettingController extends AdminController
public function store(Request $request)
{
$data = $request->only([
'site_name',
'addition_config',
'upload_domain',
'upload_path',
'upload_disk',
'oss_config'
]);
//上传设置-修改env文件内配置
if(!empty($data['upload_disk'])){
$envData['FILESYSTEM_DISK'] = $data['upload_disk'];
if($envData['FILESYSTEM_DISK'] == 'oss'){//如果设置为OSS驱动则配置env变量
$envData['OSS_ACCESS_KEY_ID'] = Arr::get($data['oss_config'], 'access_key_id');
$envData['OSS_ACCESS_KEY_SECRET'] = Arr::get($data['oss_config'], 'access_key_secret');
$envData['OSS_BUCKET'] = Arr::get($data['oss_config'], 'bucket');
$envData['OSS_ENDPOINT'] = Arr::get($data['oss_config'], 'endpoint');
$envData['OSS_DOMAIN'] = Arr::get($data['oss_config'], 'domain');
if(!empty($envData['OSS_DOMAIN'])){
$envData['OSS_CNAME'] = 'true';
}else{
$envData['OSS_CNAME'] = 'false';
}
$envData['OSS_SSL'] = Arr::get($data['oss_config'], 'use_ssl') ? 'true':'false';
}
$envPath = base_path() . DIRECTORY_SEPARATOR . '.env';
$contentArray = collect(file($envPath, FILE_IGNORE_NEW_LINES));
$contentArray->transform(function ($item) use ($envData){
foreach ($envData as $key => $value){
if(str_contains($item, $key)){
return $key . '=' . $value;
}
}
return $item;
});
$content = implode("\n", $contentArray->toArray());
\File::put($envPath, $content);
}
return settings()->adminSetMany($data);
}
}

View File

@ -6,6 +6,7 @@
"license": "MIT",
"require": {
"php": "^8.1",
"alphasnow/aliyun-oss-laravel": "^4.7",
"guzzlehttp/guzzle": "^7.2",
"laravel/framework": "^10.10",
"laravel/sanctum": "^3.3",

137
composer.lock generated
View File

@ -4,8 +4,143 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "ec2cedc62465f8a6d60ba0b0f78581dd",
"content-hash": "b2333ae7a977ba073ff6ef0f01f5de43",
"packages": [
{
"name": "aliyuncs/oss-sdk-php",
"version": "v2.6.0",
"dist": {
"type": "zip",
"url": "https://mirrors.cloud.tencent.com/repository/composer/aliyuncs/oss-sdk-php/v2.6.0/aliyuncs-oss-sdk-php-v2.6.0.zip",
"reference": "572d0f8e099e8630ae7139ed3fdedb926c7a760f",
"shasum": ""
},
"require": {
"php": ">=5.3"
},
"require-dev": {
"phpunit/phpunit": "*",
"satooshi/php-coveralls": "*"
},
"type": "library",
"autoload": {
"psr-4": {
"OSS\\": "src/OSS"
}
},
"license": [
"MIT"
],
"authors": [
{
"name": "Aliyuncs",
"homepage": "http://www.aliyun.com"
}
],
"description": "Aliyun OSS SDK for PHP",
"homepage": "http://www.aliyun.com/product/oss/",
"time": "2022-08-03T08:06:01+00:00"
},
{
"name": "alphasnow/aliyun-oss-flysystem",
"version": "3.3.3",
"dist": {
"type": "zip",
"url": "https://mirrors.cloud.tencent.com/repository/composer/alphasnow/aliyun-oss-flysystem/3.3.3/alphasnow-aliyun-oss-flysystem-3.3.3.zip",
"reference": "ac62f862cb743ca76f7c3c146ffdd8d52af86153",
"shasum": ""
},
"require": {
"aliyuncs/oss-sdk-php": "^2.5",
"league/flysystem": "^3.0"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^3.6",
"mockery/mockery": "^1.5",
"php-coveralls/php-coveralls": "*",
"phpstan/phpstan": "^1.4",
"phpunit/phpunit": "^9.5",
"vlucas/phpdotenv": "^5.4"
},
"type": "library",
"autoload": {
"psr-4": {
"AlphaSnow\\Flysystem\\Aliyun\\": "src/"
}
},
"license": [
"MIT"
],
"authors": [
{
"name": "Alpha Snow",
"email": "wind91@foxmail.com"
}
],
"description": "Flysystem adapter for the Aliyun storage",
"homepage": "https://alphasnow.github.io/aliyun-oss-flysystem/",
"keywords": [
"adapter",
"aliyun",
"filesystem",
"oss"
],
"time": "2023-06-29T08:45:24+00:00"
},
{
"name": "alphasnow/aliyun-oss-laravel",
"version": "4.7.1",
"dist": {
"type": "zip",
"url": "https://mirrors.cloud.tencent.com/repository/composer/alphasnow/aliyun-oss-laravel/4.7.1/alphasnow-aliyun-oss-laravel-4.7.1.zip",
"reference": "d4f5885bcff8c7a5c43be118e749a85fe5eb6a99",
"shasum": ""
},
"require": {
"alphasnow/aliyun-oss-flysystem": "^3.3",
"php": "^8.0.2"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^3.12",
"mockery/mockery": "^1.5",
"orchestra/testbench": "^7.13",
"php-coveralls/php-coveralls": "*",
"phpstan/phpstan": "^1.9",
"phpunit/phpunit": "^9.5"
},
"type": "library",
"extra": {
"laravel": {
"providers": [
"AlphaSnow\\LaravelFilesystem\\Aliyun\\AliyunServiceProvider"
]
}
},
"autoload": {
"psr-4": {
"AlphaSnow\\LaravelFilesystem\\Aliyun\\": "src/"
}
},
"license": [
"MIT"
],
"authors": [
{
"name": "alphasnow",
"email": "wind91@foxmail.com"
}
],
"description": "alibaba cloud object storage service for laravel",
"homepage": "https://alphasnow.github.io/aliyun-oss-laravel/",
"keywords": [
"aliyun",
"filesystems",
"laravel",
"oss",
"storage"
],
"time": "2022-12-03T14:27:07+00:00"
},
{
"name": "brick/math",
"version": "0.11.0",

View File

@ -54,7 +54,7 @@ return [
],
'upload' => [
'disk' => 'public',
'disk' => env("FILESYSTEM_DISK", 'public'),
// 文件上传目录
'directory' => [
'image' => 'images',

View File

@ -56,6 +56,22 @@ return [
'throw' => false,
],
"oss" => [
"driver" => "oss",
"access_key_id" => env("OSS_ACCESS_KEY_ID"), // 必填, 阿里云的AccessKeyId
"access_key_secret" => env("OSS_ACCESS_KEY_SECRET"), // 必填, 阿里云的AccessKeySecret
"bucket" => env("OSS_BUCKET"), // 必填, 对象存储的Bucket, 示例: my-bucket
"endpoint" => env("OSS_ENDPOINT"), // 必填, 对象存储的Endpoint, 示例: oss-cn-shanghai.aliyuncs.com
"internal" => env("OSS_INTERNAL", null), // 选填, 内网上传地址,填写即启用 示例: oss-cn-shanghai-internal.aliyuncs.com
"domain" => env("OSS_DOMAIN", null), // 选填, 绑定域名,填写即启用 示例: oss.my-domain.com
"is_cname" => env("OSS_CNAME", false), // 选填, 若Endpoint为自定义域名此项要为truehttps://github.com/aliyun/aliyun-oss-php-sdk/blob/572d0f8e099e8630ae7139ed3fdedb926c7a760f/src/OSS/OssClient.php#L113C1-L122C78
"prefix" => env("OSS_PREFIX", ""), // 选填, 统一存储地址前缀
"use_ssl" => env("OSS_SSL", false), // 选填, 是否使用HTTPS
"reverse_proxy" => env("OSS_REVERSE_PROXY", false), // 选填, 域名是否使用NGINX代理绑定
"throw" => env("OSS_THROW", true), // 选填, 是否抛出引起错误的异常,默认出现错误时,不抛出异常仅返回false
"options" => [], // 选填, 添加全局配置参数, 示例: [\OSS\OssClient::OSS_CHECK_MD5 => false]
"macros" => [] // 选填, 添加自定义Macro, 示例: [\App\Macros\ListBuckets::class, \App\Macros\CreateBucket::class]
],
],
/*