store-manage/database/seeders/KeywordSeeder.php

100 lines
2.9 KiB
PHP

<?php
namespace Database\Seeders;
use App\Models\Keyword;
use Illuminate\Database\Seeder;
use Illuminate\Support\Arr;
class KeywordSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$keywords = [
[
'key' => 'article_category',
'name' => '文章分类',
'children' => [],
],
[
'key' => 'article_tag',
'name' => '文章标签',
'children' => [],
],
[
'key' => 'banner_address',
'name' => '广告位置',
'children' => [],
],
[
'key' => 'job',
'name' => '职位',
'children' => ['普通员工', '小组长', '主管']
],
[
'key' => 'store_category',
'name' => '门店分类',
'children' => [
['name' => '家用电器', 'children' => [
['name' => '电视'],
['name' => '冰箱'],
['name' => '洗衣机'],
]],
['name' => '手机数码', 'children' => [
['name' => '手机'],
['name' => '手机配件'],
['name' => '摄影摄像'],
]],
['name' => '电脑办公', 'children' => [
['name' => '电脑整机'],
['name' => '外设产品'],
['name' => '网络产品'],
]]
],
],
[
'key' => 'store_business',
'name' => '门店经营分类',
'children' => ['直营', '代理'],
],
[
'key' => 'store_level',
'name' => '门店等级',
'children' => ['AAA', 'AA', 'A', 'B', 'C', '无'],
],
];
$this->insertKeywors($keywords);
}
protected function insertKeywors(array $data = [], ?Keyword $parent = null): void
{
/** @var array */
foreach ($data as $i => $item) {
if (! is_array($item)) {
$item = ['name' => $item];
}
$item['parent_id'] = $parent?->id ?: 0;
if (! array_key_exists('sort', $item)) {
$item['sort'] = $i + 1;
}
$key = Arr::pull($item, 'key', $parent?->key . '_' . ($i + 1));
/** @var \App\Models\Keyword */
$keyword = Keyword::updateOrCreate(
['key' => $key], Arr::except($item, ['children'])
);
$this->insertKeywors($item['children'] ?? [], $keyword->setRelation('parent', $parent));
}
}
}