old-hotel-charge/database/seeders/AdminMenuSeeder.php

97 lines
3.9 KiB
PHP

<?php
namespace Database\Seeders;
use Dcat\Admin\Models\Menu;
use Dcat\Admin\Models\Permission;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Str;
use Throwable;
class AdminMenuSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
//
$menus = [
['title' => '主页', 'icon' => 'feather icon-bar-chart-2', 'uri' => '/'],
['title' => '客人信息', 'icon' => 'feather icon-users', 'uri' => '/oldmen'],
['title' => '入住管理', 'icon' => 'feather icon-feather', 'uri' => '',
'children' =>[
['title' => '入住列表', 'icon' => '', 'uri' => '/live-ins', 'permission' => ''],
['title' => '续费列表', 'icon' => '', 'uri' => '/live-continues', 'permission' => ''],
]],
['title' => '快捷操作', 'icon' => 'feather icon-fast-forward', 'uri' => '/', 'children' =>[
['title' => '入住', 'icon' => '', 'uri' => '/live-in-do', 'permission' => ''],
['title' => '续费', 'icon' => '', 'uri' => '/live-continue-do', 'permission' => ''],
['title' => '结算', 'icon' => '', 'uri' => '/live-out-do', 'permission' => ''],
]],
['title' => '费用配置', 'icon' => 'feather icon-stop-circle', 'uri' => '/cost-advices'],
['title' => '系统管理', 'icon' => 'feather icon-settings', 'uri' => '',
'permission' => ['administrators', 'roles', 'keywords', 'settings'],
'children' => [
['title' => '用户管理', 'icon' => '', 'uri' => '/auth/users', 'permission' => 'administrators'],
['title' => '角色管理', 'icon' => '', 'uri' => '/auth/roles', 'permission' => 'roles'],
['title' => '字典管理', 'icon' => '', 'uri' => '/keywords', 'permission' => 'keywords'],
// ['title' => '配置管理', 'icon' => '', 'uri' => '/settings', 'permission' => 'settings'],
], ],
];
DB::table('admin_menu')->truncate();
DB::table('admin_permission_menu')->truncate();
try {
DB::begintransaction();
$this->createMenus($menus);
DB::commit();
} catch (Throwable $th) {
DB::rollBack();
report($th);
}
}
public function createMenus(array $menus, $pid = 0)
{
$prefix = 'dcat.admin.';
foreach ($menus as $menu) {
$mm = Menu::create([
'title' => $menu['title'],
'icon' => $menu['icon'],
'uri' => $menu['uri'],
'parent_id' => $pid,
]);
if (isset($menu['permission'])) {
if (! is_array($menu['permission'])) {
$permissions = [$menu['permission']];
} else {
$permissions = $menu['permission'];
}
foreach ($permissions as $item) {
if (Str::contains($item, '.')) {
$permission = Permission::where('slug', $prefix.$item)->first();
} else {
$permission = Permission::where('slug', $prefix.$item.'.index')->first();
}
if ($permission) {
DB::table('admin_permission_menu')->insert([
'permission_id' => $permission->id,
'menu_id' => $mm->id,
'created_at' => now(),
'updated_at' => now(),
]);
}
}
}
if (isset($menu['children'])) {
$this->createMenus($menu['children'], $mm->id);
}
}
}
}