| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192 |
- <?php
- namespace App\Console\Commands;
- use App\Module\System\Models\AdminMenu;
- use Illuminate\Console\Command;
- class UpdateAdminMenuEmoji extends Command
- {
- /**
- * The name and signature of the console command.
- *
- * @var string
- */
- protected $signature = 'admin:update-menu-emoji';
- /**
- * The console command description.
- *
- * @var string
- */
- protected $description = '为AdminMenu的title前添加emoji表情';
- /**
- * Execute the console command.
- *
- * @return int
- */
- public function handle()
- {
- // 定义菜单项与 emoji 的映射关系
- $emojiMap = [
- // 顶级菜单
- 'Index' => '📊',
- '系统设置' => '⚙️',
- '公告管理' => '📢',
- '超管工具' => '🛠️',
- '游戏币' => '💰',
- '应用相关' => '📱',
- 'OAuth' => '🔑',
- '游戏系统设置' => '🎮',
- '游戏运营管理' => '📈',
-
- // 系统设置子菜单
- '系统配置' => '🔧',
- '短信' => '📱',
- '短信配置' => '📝',
- 'My网关短信' => '📨',
- '设置管理' => '⚙️',
- '短信-验证码' => '🔢',
-
- // 公告管理子菜单
- '公告列表' => '📋',
-
- // 超管工具子菜单
- 'Admin' => '👑',
- '资金设置' => '💲',
- '调试工具' => '🔍',
- 'Users' => '👥',
- 'Roles' => '🔰',
- 'Permission' => '🔒',
- 'Menu' => '📜',
- 'Extensions' => '🧩',
- '货币设置' => '💴',
-
- // 调试工具子菜单
- 'trace' => '🔬',
- 'devinfo' => '📋',
- 'email' => '📧',
- 'router' => '🔀',
- 'phpinfo' => '🐘',
- '请求日志' => '📝',
-
- // 游戏币子菜单
- '账户' => '👛',
- '记录' => '📒',
- '管理员日志' => '📊',
- '流转记录' => '🔄',
- '转帐记录' => '💸',
- '处罚记录' => '⚠️',
-
- // 应用相关子菜单
- '收款地址' => '📍',
-
- // 游戏物品管理
- '游戏物品管理' => '🎁',
- '物品分类' => '📂',
- '物品设置' => '🧰',
- '宝箱内容' => '📦',
- '物品合成记录' => '🔨',
- '物品分解记录' => '✂️',
- '物品分解规则' => '📏',
- '物品组管理' => '🗃️',
- '物品组内容' => '📑',
- '单独属性物品管理' => '🏷️',
- '物品产出限制' => '⛔',
- '用户宝箱保底计数' => '🔢',
- '合成配方管理' => '📝',
- '物品记录' => '📜',
- '用户物品' => '👤',
- '用户产出限制计数' => '🔢',
- '用户配方解锁状态' => '🔓',
- '游戏物品日志' => '📋',
- '宝箱消耗配置' => '💎',
-
- // 宠物相关
- '宠物' => '🐾',
- '宠物战斗记录' => '⚔️',
- '宠物配置' => '⚙️',
- '宠物管理' => '🐶',
- '宠物-等级配置' => '📊',
- '宠物洗髓记录' => '🔄',
- '宠物-技能配置' => '✨',
- '宠物-技能使用日志' => '📝',
- '宠物日志' => '📋',
-
- // 任务相关
- '任务配置' => '📋',
- '任务达成条件控制器' => '✅',
- '任务分类控制器' => '📂',
- '任务完成日志控制器' => '📝',
- '任务条件控制器' => '🔍',
- '任务控制器' => '📋',
- '任务消耗' => '💰',
- '任务消耗-日志' => '📝',
- '任务重置-日志' => '🔄',
- '任务奖励' => '🏆',
- '任务奖励-日志' => '📝',
- '用户进度' => '📊',
- '用户任务' => '📋',
- '用户任务管理' => '👥',
-
- // 土地和作物
- '🌎 土地配置' => '', // 已有emoji
- '🌾 用户作物' => '', // 已有emoji
- ];
- // 获取所有菜单项
- $menus = AdminMenu::all();
- $updatedCount = 0;
-
- foreach ($menus as $menu) {
- $title = $menu->title;
-
- // 检查标题是否已经包含emoji
- 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)) {
- $this->info("标题 '{$title}' 已包含emoji,跳过");
- continue;
- }
-
- // 查找对应的emoji
- if (isset($emojiMap[$title])) {
- $emoji = $emojiMap[$title];
-
- // 如果有emoji,则更新标题
- if (!empty($emoji)) {
- $newTitle = $emoji . ' ' . $title;
- $menu->title = $newTitle;
- $menu->save();
- $updatedCount++;
- $this->info("更新: '{$title}' -> '{$newTitle}'");
- }
- } else {
- // 为没有映射的菜单项添加一个通用emoji
- // 根据URI或父级ID选择合适的emoji
- $emoji = '📌'; // 默认emoji
-
- // 根据URI判断类型
- if (strpos($menu->uri, 'log') !== false) {
- $emoji = '📋';
- } elseif (strpos($menu->uri, 'user') !== false) {
- $emoji = '👤';
- } elseif (strpos($menu->uri, 'config') !== false) {
- $emoji = '⚙️';
- } elseif (strpos($menu->uri, 'admin') !== false) {
- $emoji = '👑';
- }
-
- $newTitle = $emoji . ' ' . $title;
- $menu->title = $newTitle;
- $menu->save();
- $updatedCount++;
- $this->info("更新(通用): '{$title}' -> '{$newTitle}'");
- }
- }
-
- $this->info("完成! 共更新 {$updatedCount} 个菜单项");
-
- return 0;
- }
- }
|