46 lines
1.1 KiB
PHP
46 lines
1.1 KiB
PHP
<?php
|
|
|
|
namespace App\Services\Admin;
|
|
|
|
use App\Models\ArticleCategory;
|
|
use Slowlyo\OwlAdmin\Services\AdminService;
|
|
use Illuminate\Http\Request;
|
|
|
|
/**
|
|
* @method ArticleCategory getModel()
|
|
* @method ArticleCategory|\Illuminate\Database\Query\Builder query()
|
|
*/
|
|
class ArticleCategoryService extends AdminService
|
|
{
|
|
protected string $modelName = ArticleCategory::class;
|
|
|
|
public function getTree()
|
|
{
|
|
$list = $this->query()->orderByDesc('sort')->get()->toArray();
|
|
return array2tree($list);
|
|
}
|
|
|
|
public function list()
|
|
{
|
|
return ['items' => $this->getTree()];
|
|
}
|
|
|
|
public function store($data): bool
|
|
{
|
|
$pid = data_get($data, 'parent_id');
|
|
if ($pid && $parent = ArticleCategory::find($pid)) {
|
|
$data['level'] = $parent->level + 1;
|
|
$data['path'] = $parent->path . $parent->id . '-';
|
|
} else {
|
|
$data['level'] = 1;
|
|
$data['path'] = '-';
|
|
}
|
|
return parent::store($data);
|
|
}
|
|
|
|
public function delete(string $ids): mixed
|
|
{
|
|
return $this->query()->whereIn($this->primaryKey(), explode(',', $ids))->delete();
|
|
}
|
|
}
|