| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- <?php
- namespace App\Console\Commands;
- use App\Module\System\Models\AdminMenu;
- use Illuminate\Console\Command;
- class InsertOpenAPIAdminMenu extends Command
- {
- /**
- * The name and signature of the console command.
- *
- * @var string
- */
- protected $signature = 'admin:insert-openapi-menu';
- /**
- * The console command description.
- *
- * @var string
- */
- protected $description = '添加OpenAPI模块的后台管理菜单';
- /**
- * Execute the console command.
- *
- * @return int
- */
- public function handle()
- {
- $this->info('开始添加OpenAPI模块后台菜单...');
- // 1. 创建顶级菜单'外接管理'
- $externalManageMenu = $this->createExternalManageMenu();
-
- // 2. 创建OpenAPI应用管理子菜单
- $this->createOpenAPIAppMenu($externalManageMenu->id);
- $this->info('OpenAPI模块后台菜单添加完成!');
- return 0;
- }
- /**
- * 创建顶级菜单'外接管理'
- *
- * @return AdminMenu
- */
- protected function createExternalManageMenu(): AdminMenu
- {
- // 检查是否已存在
- $existingMenu = AdminMenu::where('title', '外接管理')
- ->where('parent_id', 0)
- ->first();
- if ($existingMenu) {
- $this->info("顶级菜单'外接管理'已存在: ID = {$existingMenu->id}");
- return $existingMenu;
- }
- // 获取最大的order值
- $maxOrder = AdminMenu::max('order');
- $nextOrder = $maxOrder + 1;
- // 创建顶级菜单
- $menu = AdminMenu::create([
- 'parent_id' => 0,
- 'order' => $nextOrder,
- 'title' => '外接管理',
- 'icon' => 'fa-plug',
- 'uri' => '',
- 'show' => 1
- ]);
- $this->info("创建顶级菜单'外接管理': ID = {$menu->id}, Order = {$nextOrder}");
- return $menu;
- }
- /**
- * 创建OpenAPI应用管理子菜单
- *
- * @param int $parentId
- * @return AdminMenu
- */
- protected function createOpenAPIAppMenu(int $parentId): AdminMenu
- {
- // 检查是否已存在
- $existingMenu = AdminMenu::where('title', 'OpenAPI应用管理')
- ->where('parent_id', $parentId)
- ->first();
- if ($existingMenu) {
- $this->info("子菜单'OpenAPI应用管理'已存在: ID = {$existingMenu->id}");
- return $existingMenu;
- }
- // 获取父菜单下的最大order值
- $maxOrder = AdminMenu::where('parent_id', $parentId)->max('order');
- $nextOrder = $maxOrder ? $maxOrder + 1 : 1;
- // 创建子菜单
- $menu = AdminMenu::create([
- 'parent_id' => $parentId,
- 'order' => $nextOrder,
- 'title' => 'OpenAPI应用管理',
- 'icon' => 'fa-key',
- 'uri' => 'openapi-apps',
- 'show' => 1
- ]);
- $this->info("创建子菜单'OpenAPI应用管理': ID = {$menu->id}, URI = openapi-apps");
- return $menu;
- }
- /**
- * 显示菜单结构
- */
- protected function showMenuStructure()
- {
- $this->info("\n当前菜单结构:");
- $this->info("外接管理 (fa-plug)");
- $this->info(" └── OpenAPI应用管理 (fa-key) -> openapi-apps");
- }
- }
|