<?php
|
|
namespace app\operations\service\region;
|
|
use app\common\model\plus\operations\Access;
|
use app\common\service\region\AuthService;
|
|
/**
|
* 区域代理菜单服务
|
*/
|
class MenusService
|
{
|
/**
|
* 获取菜单列表
|
* @param int $userId 用户ID
|
* @return array
|
*/
|
public function getMenus($userId)
|
{
|
// 获取用户有权限的菜单
|
return AuthService::getUserMenus($userId);
|
}
|
|
/**
|
* 获取所有菜单列表(用于权限分配)
|
* @return array
|
*/
|
public function getAllMenus()
|
{
|
$accessModel = new Access();
|
$accessList = $accessModel->order(['sort' => 'asc', 'create_time' => 'asc'])->select();
|
|
return $this->buildMenuTree($accessList ? $accessList->toArray() : []);
|
}
|
|
/**
|
* 构建菜单树结构
|
* @param array $data 权限数据
|
* @param int $parentId 父级ID
|
* @return array
|
*/
|
private function buildMenuTree($data, $parentId = 0)
|
{
|
$tree = [];
|
foreach ($data as $item) {
|
if ($item['parent_id'] == $parentId) {
|
$item['children'] = $this->buildMenuTree($data, $item['access_id']);
|
$tree[] = $item;
|
}
|
}
|
return $tree;
|
}
|
|
/**
|
* 获取面包屑导航
|
* @param string $path 当前路径
|
* @return array
|
*/
|
public function getBreadcrumb($path)
|
{
|
$accessModel = new Access();
|
$current = $accessModel->where('path', '=', $path)->find();
|
|
if (!$current) {
|
return [];
|
}
|
|
$breadcrumb = [$current];
|
$parentId = $current['parent_id'];
|
|
while ($parentId > 0) {
|
$parent = $accessModel->where('access_id', '=', $parentId)->find();
|
if (!$parent) {
|
break;
|
}
|
array_unshift($breadcrumb, $parent);
|
$parentId = $parent['parent_id'];
|
}
|
|
return $breadcrumb;
|
}
|
}
|