From 854f53e1d224a640d1fbaa8a6100ff815e544c2b Mon Sep 17 00:00:00 2001 From: vine_liutk <961510893@qq.com> Date: Wed, 26 Apr 2023 11:14:58 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4service?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Admin/Controllers/RegionController.php | 12 ++++++- app/Filters/Admin/RegionFilter.php | 30 +++++++++++++++++ app/Models/Region.php | 7 ++++ app/Services/Admin/BaseService.php | 34 ++++++++++++++++++++ app/Services/Admin/KeywordService.php | 8 +---- app/Services/Admin/RegionCategoryService.php | 21 ++---------- app/Services/Admin/RegionService.php | 5 ++- 7 files changed, 90 insertions(+), 27 deletions(-) create mode 100644 app/Filters/Admin/RegionFilter.php create mode 100644 app/Services/Admin/BaseService.php diff --git a/app/Admin/Controllers/RegionController.php b/app/Admin/Controllers/RegionController.php index d6b8741..d9b602a 100644 --- a/app/Admin/Controllers/RegionController.php +++ b/app/Admin/Controllers/RegionController.php @@ -8,6 +8,7 @@ use Slowlyo\OwlAdmin\Renderers\TableColumn; use Slowlyo\OwlAdmin\Renderers\TextControl; use Slowlyo\OwlAdmin\Controllers\AdminController; use App\Services\Admin\RegionService; +use Slowlyo\OwlAdmin\Renderers\Button; use App\Admin\Components; class RegionController extends AdminController @@ -24,6 +25,15 @@ class RegionController extends AdminController $this->createButton(true, 'lg'), ...$this->baseHeaderToolBar(), ]) + ->filter( + $this->baseFilter()->body([ + amisMake()->TextControl()->make('name')->label('名称')->name('name'), + Components::make()->parentControl(admin_url('api/region-categories/tree-list'), 'category_id', '分类')->size('sm'), + + Button::make()->label(__('admin.reset'))->actionType('clear-and-submit'), + amis('submit')->label(__('admin.search'))->level('primary'), + ])->actions([]) + ) ->columns([ TableColumn::make()->name('id')->label('ID')->sortable(true), TableColumn::make()->name('name')->label('名称'), @@ -43,7 +53,7 @@ class RegionController extends AdminController { return $this->baseForm()->body([ TextControl::make()->name('name')->label('名称')->required(true), - Components::make()->parentControl('', 'category_id', '分类'), + Components::make()->parentControl(admin_url('api/region-categories/tree-list'), 'category_id', '分类'), Components::make()->fuEditorControl('description', '介绍'), Components::make()->decimalControl('area', '面积m²'), Components::make()->sortControl(), diff --git a/app/Filters/Admin/RegionFilter.php b/app/Filters/Admin/RegionFilter.php new file mode 100644 index 0000000..19641e9 --- /dev/null +++ b/app/Filters/Admin/RegionFilter.php @@ -0,0 +1,30 @@ +where('name', 'like', '%'.$name.'%'); + } + + /** + * 父级分类 + */ + public function category($categoryId){ + return $this->where('category_id', $categoryId); + } + + /** + * 是否开启 + */ + public function isEnable($isEnable){ + return $this->where('is_enbale', $isEnable); + } + +} diff --git a/app/Models/Region.php b/app/Models/Region.php index a03ef9d..185b8b4 100644 --- a/app/Models/Region.php +++ b/app/Models/Region.php @@ -4,8 +4,15 @@ namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use EloquentFilter\Filterable; class Region extends Model { use HasFactory; + use Filterable; + + protected function serializeDate(\DateTimeInterface $date){ + return $date->format('Y-m-d H:i:s'); + } + } diff --git a/app/Services/Admin/BaseService.php b/app/Services/Admin/BaseService.php new file mode 100644 index 0000000..ed3ce24 --- /dev/null +++ b/app/Services/Admin/BaseService.php @@ -0,0 +1,34 @@ +query()->orderByDesc('sort')->get()->toArray(); + return array2tree($list); + } + + public function getModelFilter() + { + return $this->modelFilterName; + } + + public function listQuery() + { + $model = $this->getModel(); + $filter = $this->getModelFilter(); + + return $this->query() + ->filter(request()->input(), $filter) + ->orderByDesc($model->getUpdatedAtColumn() ?? $model->getKeyName()); + } +} diff --git a/app/Services/Admin/KeywordService.php b/app/Services/Admin/KeywordService.php index 598aa51..6680469 100644 --- a/app/Services/Admin/KeywordService.php +++ b/app/Services/Admin/KeywordService.php @@ -10,16 +10,10 @@ use Slowlyo\OwlAdmin\Services\AdminService; * @method Keyword getModel() * @method Keyword|\Illuminate\Database\Query\Builder query() */ -class KeywordService extends AdminService +class KeywordService extends BaseService { protected string $modelName = Keyword::class; - public function getTree() - { - $list = $this->query()->orderByDesc('sort')->get()->toArray(); - return array2tree($list); - } - public function parentIsChild($id, $parent_id): bool { $parent = $this->query()->find($parent_id); diff --git a/app/Services/Admin/RegionCategoryService.php b/app/Services/Admin/RegionCategoryService.php index 75a0666..88f8a21 100644 --- a/app/Services/Admin/RegionCategoryService.php +++ b/app/Services/Admin/RegionCategoryService.php @@ -4,30 +4,15 @@ namespace App\Services\Admin; use App\Models\RegionCategory; use App\Filters\Admin\RegionCategoryFilter; -use Slowlyo\OwlAdmin\Services\AdminService; /** * @method RegionCategory getModel() * @method RegionCategory|\Illuminate\Database\Query\Builder query() */ -class RegionCategoryService extends AdminService +class RegionCategoryService extends BaseService { protected string $modelName = RegionCategory::class; - public function getTree() - { - $list = $this->query()->orderByDesc('sort')->get()->toArray(); - - return array2tree($list); - } - - public function listQuery() - { - $model = $this->getModel(); - - return $this->query() - ->with('parent') - ->filter(request()->input(), RegionCategoryFilter::class) - ->orderByDesc($model->getUpdatedAtColumn() ?? $model->getKeyName()); - } + protected string $modelFilterName = RegionCategoryFilter::class; + } diff --git a/app/Services/Admin/RegionService.php b/app/Services/Admin/RegionService.php index 6a3acd7..e9bfcb6 100644 --- a/app/Services/Admin/RegionService.php +++ b/app/Services/Admin/RegionService.php @@ -3,13 +3,16 @@ namespace App\Services\Admin; use App\Models\Region; +use App\Filters\Admin\RegionFilter; use Slowlyo\OwlAdmin\Services\AdminService; /** * @method Region getModel() * @method Region|\Illuminate\Database\Query\Builder query() */ -class RegionService extends AdminService +class RegionService extends BaseService { protected string $modelName = Region::class; + + protected string $modelFilterName = RegionFilter::class; }