InsertUrsPromotionAdminMenuCommand.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. <?php
  2. namespace App\Module\UrsPromotion\Commands;
  3. use Illuminate\Console\Command;
  4. use Illuminate\Support\Facades\DB;
  5. /**
  6. * URS推广模块后台菜单配置命令
  7. *
  8. * 用于配置URS推广模块的后台管理菜单
  9. */
  10. class InsertUrsPromotionAdminMenuCommand extends Command
  11. {
  12. /**
  13. * 命令签名
  14. */
  15. protected $signature = 'urs:insert-admin-menu {--force : 强制重新创建菜单}';
  16. /**
  17. * 命令描述
  18. */
  19. protected $description = '配置URS推广模块后台管理菜单';
  20. /**
  21. * 执行命令
  22. */
  23. public function handle()
  24. {
  25. $this->info('开始配置URS推广模块后台管理菜单...');
  26. // 检查是否强制重新创建
  27. $force = $this->option('force');
  28. // 检查菜单是否已存在
  29. $existingMenu = DB::table('admin_menu')->where('title', 'URS推广管理')->first();
  30. if ($existingMenu && !$force) {
  31. $this->warn('URS推广管理菜单已存在,使用 --force 参数强制重新创建');
  32. return;
  33. }
  34. if ($existingMenu && $force) {
  35. $this->info('删除现有菜单...');
  36. $this->deleteExistingMenus();
  37. }
  38. // 创建菜单
  39. $this->createMenus();
  40. $this->info('URS推广模块后台管理菜单配置完成!');
  41. }
  42. /**
  43. * 删除现有菜单
  44. */
  45. private function deleteExistingMenus(): void
  46. {
  47. // 删除URS推广相关的所有菜单
  48. DB::table('admin_menu')->where('title', 'like', '%URS%')->delete();
  49. }
  50. /**
  51. * 创建菜单
  52. */
  53. private function createMenus(): void
  54. {
  55. // 获取下一个可用的order值
  56. $maxOrder = DB::table('admin_menu')->max('order') ?? 0;
  57. // 1. 创建一级菜单:URS推广管理
  58. $parentId = DB::table('admin_menu')->insertGetId([
  59. 'parent_id' => 0,
  60. 'order' => $maxOrder + 1,
  61. 'title' => 'URS推广管理',
  62. 'icon' => 'fa-users',
  63. 'uri' => '',
  64. 'permission' => '',
  65. 'created_at' => now(),
  66. 'updated_at' => now(),
  67. ]);
  68. $this->info("创建一级菜单:URS推广管理 (ID: {$parentId})");
  69. // 2. 创建二级菜单
  70. $menus = [
  71. [
  72. 'title' => 'URS推荐关系',
  73. 'icon' => 'fa-link',
  74. 'uri' => 'urs-promotion/user-referrals',
  75. 'permission' => '',
  76. ],
  77. [
  78. 'title' => 'URS达人等级',
  79. 'icon' => 'fa-star',
  80. 'uri' => 'urs-promotion/user-talents',
  81. 'permission' => '',
  82. ],
  83. [
  84. 'title' => 'URS收益记录',
  85. 'icon' => 'fa-money',
  86. 'uri' => 'urs-promotion/profits',
  87. 'permission' => '',
  88. ],
  89. [
  90. 'title' => 'URS等级配置',
  91. 'icon' => 'fa-cog',
  92. 'uri' => 'urs-promotion/talent-configs',
  93. 'permission' => '',
  94. ],
  95. ];
  96. foreach ($menus as $index => $menu) {
  97. $menuId = DB::table('admin_menu')->insertGetId([
  98. 'parent_id' => $parentId,
  99. 'order' => $maxOrder + 2 + $index,
  100. 'title' => $menu['title'],
  101. 'icon' => $menu['icon'],
  102. 'uri' => $menu['uri'],
  103. 'permission' => $menu['permission'],
  104. 'created_at' => now(),
  105. 'updated_at' => now(),
  106. ]);
  107. $this->info("创建二级菜单:{$menu['title']} (ID: {$menuId})");
  108. }
  109. }
  110. }