InsertCleanupAdminMenuCommand.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. <?php
  2. namespace App\Module\Cleanup\Commands;
  3. use Illuminate\Console\Command;
  4. use Illuminate\Support\Facades\DB;
  5. /**
  6. * Cleanup 模块后台菜单配置命令
  7. *
  8. * 用于配置 Cleanup 模块的后台管理菜单
  9. */
  10. class InsertCleanupAdminMenuCommand extends Command
  11. {
  12. /**
  13. * 命令签名
  14. */
  15. protected $signature = 'cleanup:insert-admin-menu {--force : 强制重新创建菜单}';
  16. /**
  17. * 命令描述
  18. */
  19. protected $description = '配置 Cleanup 模块后台管理菜单';
  20. /**
  21. * 执行命令
  22. */
  23. public function handle()
  24. {
  25. $this->info('开始配置 Cleanup 模块后台管理菜单...');
  26. // 检查是否强制重新创建
  27. $force = $this->option('force');
  28. // 检查菜单是否已存在
  29. $existingMenu = DB::table('admin_menu')->where('title', '数据清理')->first();
  30. if ($existingMenu && !$force) {
  31. $this->warn('数据清理菜单已存在,使用 --force 参数强制重新创建');
  32. return;
  33. }
  34. if ($existingMenu && $force) {
  35. $this->info('删除现有菜单...');
  36. $this->deleteExistingMenus();
  37. }
  38. // 创建菜单
  39. $this->createMenus();
  40. $this->info('Cleanup 模块后台管理菜单配置完成!');
  41. }
  42. /**
  43. * 删除现有菜单
  44. */
  45. protected function deleteExistingMenus()
  46. {
  47. // 查找数据清理主菜单
  48. $mainMenu = DB::table('admin_menu')->where('title', '数据清理')->first();
  49. if ($mainMenu) {
  50. // 删除所有子菜单
  51. DB::table('admin_menu')->where('parent_id', $mainMenu->id)->delete();
  52. // 删除主菜单
  53. DB::table('admin_menu')->where('id', $mainMenu->id)->delete();
  54. $this->info('已删除现有菜单');
  55. }
  56. }
  57. /**
  58. * 创建菜单
  59. */
  60. protected function createMenus()
  61. {
  62. // 获取超管工具菜单ID (parent_id = 107)
  63. $superAdminToolsId = 107;
  64. // 获取当前最大order值
  65. $maxOrder = DB::table('admin_menu')->max('order');
  66. $currentOrder = $maxOrder + 1;
  67. // 1. 创建数据清理主菜单
  68. $cleanupMainMenuId = DB::table('admin_menu')->insertGetId([
  69. 'parent_id' => $superAdminToolsId,
  70. 'order' => $currentOrder++,
  71. 'title' => '数据清理',
  72. 'icon' => 'fa-trash-o',
  73. 'uri' => '',
  74. 'show' => 1,
  75. 'created_at' => now(),
  76. 'updated_at' => now(),
  77. ]);
  78. $this->info("创建主菜单: 数据清理 (ID: {$cleanupMainMenuId})");
  79. // 2. 创建子菜单
  80. $subMenus = [
  81. [
  82. 'title' => '清理配置',
  83. 'icon' => 'fa-cog',
  84. 'uri' => 'cleanup/configs',
  85. 'description' => '配置各表的清理规则'
  86. ],
  87. [
  88. 'title' => '清理计划',
  89. 'icon' => 'fa-calendar',
  90. 'uri' => 'cleanup/plans',
  91. 'description' => '管理清理计划'
  92. ],
  93. [
  94. 'title' => '清理任务',
  95. 'icon' => 'fa-tasks',
  96. 'uri' => 'cleanup/tasks',
  97. 'description' => '查看和管理清理任务'
  98. ],
  99. [
  100. 'title' => '数据备份',
  101. 'icon' => 'fa-database',
  102. 'uri' => 'cleanup/backups',
  103. 'description' => '管理数据备份'
  104. ],
  105. [
  106. 'title' => '清理日志',
  107. 'icon' => 'fa-file-text-o',
  108. 'uri' => 'cleanup/logs',
  109. 'description' => '查看清理操作日志'
  110. ],
  111. ];
  112. foreach ($subMenus as $menu) {
  113. $subMenuId = DB::table('admin_menu')->insertGetId([
  114. 'parent_id' => $cleanupMainMenuId,
  115. 'order' => $currentOrder++,
  116. 'title' => $menu['title'],
  117. 'icon' => $menu['icon'],
  118. 'uri' => $menu['uri'],
  119. 'show' => 1,
  120. 'created_at' => now(),
  121. 'updated_at' => now(),
  122. ]);
  123. $this->info("创建子菜单: {$menu['title']} (ID: {$subMenuId}) - {$menu['description']}");
  124. }
  125. $this->info('所有菜单创建完成!');
  126. }
  127. }