diff --git a/.env.example b/.env.example index ea0665b..c8e8030 100644 --- a/.env.example +++ b/.env.example @@ -17,7 +17,7 @@ DB_PASSWORD= BROADCAST_DRIVER=log CACHE_DRIVER=file -FILESYSTEM_DISK=local +FILESYSTEM_DISK=public QUEUE_CONNECTION=sync SESSION_DRIVER=file SESSION_LIFETIME=120 diff --git a/app/Admin/Controllers/FriendLinkController.php b/app/Admin/Controllers/FriendLinkController.php new file mode 100644 index 0000000..55a8968 --- /dev/null +++ b/app/Admin/Controllers/FriendLinkController.php @@ -0,0 +1,56 @@ +baseCRUD() + ->headerToolbar([ + $this->createButton(true, 'md'), + amis('reload')->align('right'), + amis('filter-toggler')->align('right'), + ]) + ->filter($this->baseFilter()->body([ + + ] + )) + ->columns([ + amis()->TableColumn()->make()->name('id')->label('ID')->width('50px')->sortable(true), + amis()->TableColumn('name', __('admin.friend_links.name')), + amis()->TableColumn('uri', __('admin.friend_links.uri')), + amis()->TableColumn('cover', __('admin.friend_links.cover'))->type('image')->height('50px')->width('150px')->enlargeAble(true), + amis()->TableColumn('sort', __('admin.friend_links.sort')), + amis()->TableColumn('is_enable', __('admin.friend_links.is_enable'))->type('switch'), + amis()->TableColumn('created_at', __('admin.created_at'))->type('datetime')->sortable(true), + amisMake()->Operation()->label(__('admin.actions'))->buttons([ + $this->rowEditButton(true, 'md'), + $this->rowDeleteButton(), + ]), + ]); + + return $this->baseList($crud); + } + + public function form(): Form + { + return $this->baseForm()->body([ + amis()->TextControl('name', __('admin.friend_links.name'))->required(true), + amis()->TextControl('uri', __('admin.friend_links.uri')), + Components::make()->cropImageControl('cover', __('admin.friend_links.cover')), + amis()->SwitchControl('is_enable', __('admin.friend_links.is_enable'))->value(true), + Components::make()->sortControl('sort', __('admin.friend_links.sort')), + ]); + } +} \ No newline at end of file diff --git a/app/Admin/routes.php b/app/Admin/routes.php index 50050a6..86a4f2a 100644 --- a/app/Admin/routes.php +++ b/app/Admin/routes.php @@ -33,6 +33,8 @@ Route::group([ $router->resource('ads', \App\Admin\Controllers\AdController::class); + $router->resource('friend_links', \App\Admin\Controllers\FriendLinkController::class); + //数据管理 $router->resource('financial_cate', \App\Admin\Controllers\KeywordController::class); diff --git a/app/Models/Filters/FriendLinkFilter.php b/app/Models/Filters/FriendLinkFilter.php new file mode 100644 index 0000000..b12595c --- /dev/null +++ b/app/Models/Filters/FriendLinkFilter.php @@ -0,0 +1,17 @@ +where('id', $id); + } +} diff --git a/app/Models/FriendLink.php b/app/Models/FriendLink.php new file mode 100644 index 0000000..b0e9e29 --- /dev/null +++ b/app/Models/FriendLink.php @@ -0,0 +1,23 @@ +format('Y-m-d H:i:s'); + } + + protected $fillable = [ + 'name', 'uri', 'cover', 'is_enable', 'sort' + ]; + +} diff --git a/app/Services/Admin/FriendLinkService.php b/app/Services/Admin/FriendLinkService.php new file mode 100644 index 0000000..af36dfb --- /dev/null +++ b/app/Services/Admin/FriendLinkService.php @@ -0,0 +1,66 @@ +getTableColumns(); + $model = $this->getModel(); + + $isEnable = Arr::get($data, 'is_enabled'); + $publishedAt = Arr::get($data, 'published_at'); + + if(isset($data['cover'])){ + $data['cover'] = $this->saveImage('cover', 'friend_links/cover')[0]; + } + + foreach ($data as $k => $v) { + if (!in_array($k, $columns)) { + continue; + } + + $model->setAttribute($k, $v); + } + + return $model->save(); + } + + public function update($primaryKey, $data): bool + { + $columns = $this->getTableColumns(); + $model = $this->query()->whereKey($primaryKey)->first(); + + if(isset($data['cover'])){ + $data['cover'] = $this->saveImage('cover', 'friend_links/cover')[0]; + } + + foreach ($data as $k => $v) { + if (!in_array($k, $columns)) { + continue; + } + + $model->setAttribute($k, $v); + } + + return $model->save(); + } +} \ No newline at end of file diff --git a/database/migrations/2024_01_19_113002_create_friend_links_table.php b/database/migrations/2024_01_19_113002_create_friend_links_table.php new file mode 100644 index 0000000..2b60f50 --- /dev/null +++ b/database/migrations/2024_01_19_113002_create_friend_links_table.php @@ -0,0 +1,33 @@ +id(); + $table->string('name')->comment('名称'); + $table->string('uri')->comment('链接地址'); + + $table->string('cover')->nullable()->comment('图片'); + $table->unsignedTinyInteger('is_enable')->default(1)->comment('显示开关'); + $table->unsignedInteger('sort')->default(0)->comment('排序'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('friend_links'); + } +}; diff --git a/database/seeders/AdminMenuSeeder.php b/database/seeders/AdminMenuSeeder.php index 09ff181..ee73341 100644 --- a/database/seeders/AdminMenuSeeder.php +++ b/database/seeders/AdminMenuSeeder.php @@ -34,7 +34,7 @@ class AdminMenuSeeder extends Seeder ['title' => 'web_content', 'icon' => 'ph:codesandbox-logo-light', 'url' => '/web_content', 'order'=>2,//网站管理 'children' => [ ['title'=>'ads', 'icon'=>'lets-icons:img-box','url'=>'/ads', 'order'=>0], - + ['title'=>'friend_links', 'icon'=>'mdi:link-variant','url'=>'/friend_links', 'order'=>1], ] ], ['title' => 'data_content', 'icon' => 'ph:codesandbox-logo-light', 'url' => '/data_content', 'order'=>3, //数据管理 diff --git a/lang/zh_CN/admin.php b/lang/zh_CN/admin.php index a50fa39..8b287e3 100644 --- a/lang/zh_CN/admin.php +++ b/lang/zh_CN/admin.php @@ -319,5 +319,12 @@ return [ 'person' => '负责人', 'person_id' => '负责人', 'sort' => '排序', + ], + 'friend_links' => [ + 'name' => '名称', + 'uri' => '链接地址', + 'cover'=> '图片', + 'sort' => '排序', + 'is_enable'=>'显示', ] ]; diff --git a/lang/zh_CN/menu.php b/lang/zh_CN/menu.php index b4a4470..f944423 100644 --- a/lang/zh_CN/menu.php +++ b/lang/zh_CN/menu.php @@ -33,4 +33,5 @@ return [ 'money_cate' => '收支类型', 'welfare_cate' => '福利类型', 'job_cate' => '工种管理', + 'friend_links' => '友情链接', ];