old-hotel-new/database/seeders/KeywordSeeder.php

80 lines
3.8 KiB
PHP

<?php
namespace Database\Seeders;
use App\Models\Keyword;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
use Illuminate\Support\Arr;
class KeywordSeeder extends Seeder
{
use WithoutModelEvents;
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
Keyword::truncate();
$list = [
['key' => 'cost_nope', 'name' => '费用项', 'value' => '', 'list' => [
['key' => 'live_fee', 'name' => '入住费用项', 'type_key' => 'cost_nope', 'value' => '', 'list'=>[
['key' => 'live_base_fee', 'name' => '综合服务费', 'type_key' => 'live_fee', 'value' => ''],
['key' => 'physical', 'name' => '体检', 'type_key' => 'live_fee', 'value' => ''],
['key' => 'heating', 'name' => '暖气费', 'type_key' => 'live_fee', 'value' => ''],
['key' => 'bedding', 'name' => '床上用品', 'type_key' => 'live_fee', 'value' => ''],
]],
['key' => 'continue_fee', 'name' => '续住费用项', 'type_key' => 'cost_nope', 'value' => '', 'list'=>[
['key' => 'continue_base_fee', 'name' => '综合服务费', 'type_key' => 'continue_fee', 'value' => ''],
['key' => 'water_fee', 'name' => '水电费', 'type_key' => 'continue_fee', 'value' => ''],
['key' => 'nurse_items', 'name' => '护理用品', 'type_key' => 'continue_fee', 'value' => ''],
['key' => 'check_up', 'name' => '血糖检查', 'type_key' => 'continue_fee', 'value' => ''],
['key' => 'use_car', 'name' => '出车', 'type_key' => 'continue_fee', 'value' => ''],
['key' => 'litle_mall', 'name' => '小卖部', 'type_key' => 'continue_fee', 'value' => ''],
]],
['key' => 'bonds_fee', 'name' => '保证金', 'type_key' => 'cost_nope', 'value' => '', 'list'=>[
['key' => 'live_in', 'name' => '入住', 'type_key' => 'bonds_fee', 'value' => ''],
['key' => 'room_items', 'name' => '房间物品', 'type_key' => 'bonds_fee', 'value' => ''],
['key' => 'health', 'name' => '医疗', 'type_key' => 'bonds_fee', 'value' => ''],
]],
]],
['key' => 'nurse_lv', 'name' => '护理等级', 'value' => '', 'list' => [
['key' => 'nurse_lv_1', 'name' => '自理', 'type_key' => 'nurse_lv', 'value' => 1],
['key' => 'nurse_lv_2', 'name' => '介护一级', 'type_key' => 'nurse_lv', 'value' => 2],
['key' => 'nurse_lv_3', 'name' => '介护二级', 'type_key' => 'nurse_lv', 'value' => 3],
['key' => 'nurse_lv_4', 'name' => '介护三级', 'type_key' => 'nurse_lv', 'value' => 4],
['key' => 'nurse_lv_5', 'name' => '介护四级', 'type_key' => 'nurse_lv', 'value' => 5],
]],
];
if ($list) {
$this->createKeywords($list);
}
}
private function createKeywords($keywords, $parentType = null)
{
foreach ($keywords as $item) {
if ($parentType) {
$type = Keyword::create([
'name' => $item['name'],
'key' => $item['key'] ?? $parentType->key.($parentType + 1),
'type_key' => $parentType->key,
'level' => ($parentType->level ?? 1) + 1,
'parent_id' => $parentType->id,
'value' => $item['value'],
]);
} else {
$type = Keyword::create(Arr::except($item, 'list'));
}
$list = data_get($item, 'list');
if ($list) {
$this->createKeywords($list, $type);
}
}
}
}