feat : role

This commit is contained in:
2024-10-28 17:56:19 +08:00
parent c86c6c1baf
commit d6465b21d8
12 changed files with 485 additions and 90 deletions

View File

@@ -5,6 +5,7 @@ namespace App\Cache\Redis\Admin;
use App\Cache\Redis\RedisCache;
use App\Constants\Admin\AuthCode;
use App\Model\AdminMenu;
use App\Service\ServiceTrait\AdminRoleMenuTrait;
use Hyperf\Di\Annotation\Inject;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\NotFoundExceptionInterface;
@@ -12,6 +13,8 @@ use RedisException;
class MenuCache
{
use AdminRoleMenuTrait;
/**
* @var RedisCache $redis
*/
@@ -30,6 +33,9 @@ class MenuCache
*/
protected string $menuKey;
/**
* 构造函数注入 key
*/
public function __construct()
{
$this->menuKey = AdminRedisKey::adminMenuList();
@@ -51,7 +57,7 @@ class MenuCache
$data = $this->getDbMenu($allMenuList);
$this->redis->set($this->menuKey,json_encode($data));
$this->redis->set($this->menuKey,json_encode($data),'system');
return $data;
}
@@ -64,38 +70,6 @@ class MenuCache
*/
public function delMenu(): void
{
$this->redis->delete($this->menuKey);
}
/**
* 递归生成合适的数据
* @param array $allMenuList
* @param int $parentId
* @return array
*/
private 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;
$this->redis->delete($this->menuKey,'system');
}
}