UpdateAdminMenuEmoji.php 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. <?php
  2. namespace App\Console\Commands;
  3. use App\Module\System\Models\AdminMenu;
  4. use Illuminate\Console\Command;
  5. class UpdateAdminMenuEmoji extends Command
  6. {
  7. /**
  8. * The name and signature of the console command.
  9. *
  10. * @var string
  11. */
  12. protected $signature = 'admin:update-menu-emoji';
  13. /**
  14. * The console command description.
  15. *
  16. * @var string
  17. */
  18. protected $description = '为AdminMenu的title前添加emoji表情';
  19. /**
  20. * Execute the console command.
  21. *
  22. * @return int
  23. */
  24. public function handle()
  25. {
  26. // 定义菜单项与 emoji 的映射关系
  27. $emojiMap = [
  28. // 顶级菜单
  29. 'Index' => '📊',
  30. '系统设置' => '⚙️',
  31. '公告管理' => '📢',
  32. '超管工具' => '🛠️',
  33. '游戏币' => '💰',
  34. '应用相关' => '📱',
  35. 'OAuth' => '🔑',
  36. '游戏系统设置' => '🎮',
  37. '游戏运营管理' => '📈',
  38. // 系统设置子菜单
  39. '系统配置' => '🔧',
  40. '短信' => '📱',
  41. '短信配置' => '📝',
  42. 'My网关短信' => '📨',
  43. '设置管理' => '⚙️',
  44. '短信-验证码' => '🔢',
  45. // 公告管理子菜单
  46. '公告列表' => '📋',
  47. // 超管工具子菜单
  48. 'Admin' => '👑',
  49. '资金设置' => '💲',
  50. '调试工具' => '🔍',
  51. 'Users' => '👥',
  52. 'Roles' => '🔰',
  53. 'Permission' => '🔒',
  54. 'Menu' => '📜',
  55. 'Extensions' => '🧩',
  56. '货币设置' => '💴',
  57. // 调试工具子菜单
  58. 'trace' => '🔬',
  59. 'devinfo' => '📋',
  60. 'email' => '📧',
  61. 'router' => '🔀',
  62. 'phpinfo' => '🐘',
  63. '请求日志' => '📝',
  64. // 游戏币子菜单
  65. '账户' => '👛',
  66. '记录' => '📒',
  67. '管理员日志' => '📊',
  68. '流转记录' => '🔄',
  69. '转帐记录' => '💸',
  70. '处罚记录' => '⚠️',
  71. // 应用相关子菜单
  72. '收款地址' => '📍',
  73. // 游戏物品管理
  74. '游戏物品管理' => '🎁',
  75. '物品分类' => '📂',
  76. '物品设置' => '🧰',
  77. '宝箱内容' => '📦',
  78. '物品合成记录' => '🔨',
  79. '物品分解记录' => '✂️',
  80. '物品分解规则' => '📏',
  81. '物品组管理' => '🗃️',
  82. '物品组内容' => '📑',
  83. '单独属性物品管理' => '🏷️',
  84. '物品产出限制' => '⛔',
  85. '用户宝箱保底计数' => '🔢',
  86. '合成配方管理' => '📝',
  87. '物品记录' => '📜',
  88. '用户物品' => '👤',
  89. '用户产出限制计数' => '🔢',
  90. '用户配方解锁状态' => '🔓',
  91. '游戏物品日志' => '📋',
  92. '宝箱消耗配置' => '💎',
  93. // 宠物相关
  94. '宠物' => '🐾',
  95. '宠物战斗记录' => '⚔️',
  96. '争霸赛-赛季' => '🏆',
  97. '争霸赛-队伍' => '👥',
  98. '争霸赛-队伍成员' => '👤',
  99. '宠物配置' => '⚙️',
  100. '宠物管理' => '🐶',
  101. '宠物-等级配置' => '📊',
  102. '宠物洗髓记录' => '🔄',
  103. '宠物-技能配置' => '✨',
  104. '宠物-技能使用日志' => '📝',
  105. '宠物日志' => '📋',
  106. // 任务相关
  107. '任务配置' => '📋',
  108. '任务达成条件控制器' => '✅',
  109. '任务分类控制器' => '📂',
  110. '任务完成日志控制器' => '📝',
  111. '任务条件控制器' => '🔍',
  112. '任务控制器' => '📋',
  113. '任务消耗' => '💰',
  114. '任务消耗-日志' => '📝',
  115. '任务重置-日志' => '🔄',
  116. '任务奖励' => '🏆',
  117. '任务奖励-日志' => '📝',
  118. '用户进度' => '📊',
  119. '用户任务' => '📋',
  120. '用户任务管理' => '👥',
  121. // 土地和作物
  122. '🌎 土地配置' => '', // 已有emoji
  123. '🌾 用户作物' => '', // 已有emoji
  124. ];
  125. // 获取所有菜单项
  126. $menus = AdminMenu::all();
  127. $updatedCount = 0;
  128. foreach ($menus as $menu) {
  129. $title = $menu->title;
  130. // 检查标题是否已经包含emoji
  131. if (preg_match('/[\x{1F600}-\x{1F64F}\x{1F300}-\x{1F5FF}\x{1F680}-\x{1F6FF}\x{1F700}-\x{1F77F}\x{1F780}-\x{1F7FF}\x{1F800}-\x{1F8FF}\x{1F900}-\x{1F9FF}\x{1FA00}-\x{1FA6F}\x{1FA70}-\x{1FAFF}\x{2600}-\x{26FF}\x{2700}-\x{27BF}]/u', $title)) {
  132. $this->info("标题 '{$title}' 已包含emoji,跳过");
  133. continue;
  134. }
  135. // 查找对应的emoji
  136. if (isset($emojiMap[$title])) {
  137. $emoji = $emojiMap[$title];
  138. // 如果有emoji,则更新标题
  139. if (!empty($emoji)) {
  140. $newTitle = $emoji . ' ' . $title;
  141. $menu->title = $newTitle;
  142. $menu->save();
  143. $updatedCount++;
  144. $this->info("更新: '{$title}' -> '{$newTitle}'");
  145. }
  146. } else {
  147. // 为没有映射的菜单项添加一个通用emoji
  148. // 根据URI或父级ID选择合适的emoji
  149. $emoji = '📌'; // 默认emoji
  150. // 根据URI判断类型
  151. if (strpos($menu->uri, 'log') !== false) {
  152. $emoji = '📋';
  153. } elseif (strpos($menu->uri, 'user') !== false) {
  154. $emoji = '👤';
  155. } elseif (strpos($menu->uri, 'config') !== false) {
  156. $emoji = '⚙️';
  157. } elseif (strpos($menu->uri, 'admin') !== false) {
  158. $emoji = '👑';
  159. }
  160. $newTitle = $emoji . ' ' . $title;
  161. $menu->title = $newTitle;
  162. $menu->save();
  163. $updatedCount++;
  164. $this->info("更新(通用): '{$title}' -> '{$newTitle}'");
  165. }
  166. }
  167. $this->info("完成! 共更新 {$updatedCount} 个菜单项");
  168. return 0;
  169. }
  170. }