Files
hyperf_service/app/Service/ServiceTrait/Admin/AdminRoleMenuTrait.php
2024-10-30 16:31:13 +08:00

49 lines
1.4 KiB
PHP

<?php
/**
* This service file is part of item.
*
* @author ctexthuang
* @contact ctexthuang@qq.com
*/
declare(strict_types=1);
namespace App\Service\ServiceTrait\Admin;
use App\Constants\Admin\AuthCode;
trait AdminRoleMenuTrait
{
/**
* 递归生成合适的数据
* @param array $allMenuList
* @param int $parentId
* @return array
*/
protected function getDbMenu(array $allMenuList, int $parentId = 0): array
{
$menuList = [];
foreach ($allMenuList as $menu) {
if ($menu['parent_id'] == $parentId) {
$children = $this->getDbMenu($allMenuList, (int)$menu['id']);
if (!empty($children)) {
//获取第一个 type 如何是菜单
if ($children[0]['type'] == AuthCode::MENU_TYPE_LIST) {
$menu['children'] = $children;
} else {
foreach ($children as $child) {
$menu['permissionList'][] = [
'id' => $child['id'],
'label' => $child['title'],
'value' => $child['value'],
];
}
}
}
$menuList[] = $menu;
}
}
return $menuList;
}
}