|
...
|
...
|
@@ -31,13 +31,8 @@ class NavController extends BaseController |
|
|
|
public function index(BNav $nav,BNavGroup $navGroup){
|
|
|
|
$this->map['project_id'] = $this->user['project_id'];
|
|
|
|
$lists = $nav->list($this->map,$this->order = ['sort','id']);
|
|
|
|
//获取菜单组排序字段
|
|
|
|
$groupInfo = $navGroup->read(['id'=>$this->param['group_id']]);
|
|
|
|
if(!empty($groupInfo['sort_list'])){
|
|
|
|
$sort_list = json_decode($groupInfo['sort_list']);
|
|
|
|
$data = $this->findDetailsList($sort_list,$lists);
|
|
|
|
}else{
|
|
|
|
$data = array();
|
|
|
|
$data = array();
|
|
|
|
if(!empty($lists)){
|
|
|
|
foreach ($lists as $v){
|
|
|
|
$v = (array)$v;
|
|
|
|
if ($v['pid'] == 0) {
|
|
...
|
...
|
@@ -45,6 +40,12 @@ class NavController extends BaseController |
|
|
|
$data[] = $v;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//获取菜单组排序字段
|
|
|
|
$groupInfo = $navGroup->read(['id'=>$this->param['group_id']]);
|
|
|
|
if(!empty($groupInfo['sort_list'])){
|
|
|
|
$sort_list = json_decode($groupInfo['sort_list']);
|
|
|
|
$data = $this->findDetailsLists($sort_list,$data);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$this->response('success',Code::SUCCESS,$data);
|
|
|
|
}
|
|
...
|
...
|
@@ -56,53 +57,28 @@ class NavController extends BaseController |
|
|
|
* @method :post
|
|
|
|
* @time :2023/12/18 14:54
|
|
|
|
*/
|
|
|
|
public function findDetailsList($data, $detailsList) {
|
|
|
|
$result = [];
|
|
|
|
foreach ($data as $item) {
|
|
|
|
$items = $item = (array)$item;
|
|
|
|
$id = $item['id'];
|
|
|
|
// 在给定的详情列表中查找匹配的id
|
|
|
|
$matchingDetail = array_filter($detailsList, function ($detail) use ($id) {
|
|
|
|
return $detail['id'] == $id;
|
|
|
|
});
|
|
|
|
if (!empty($matchingDetail)) {
|
|
|
|
$items = reset($matchingDetail);
|
|
|
|
}
|
|
|
|
if (!empty($item['sub'])) {
|
|
|
|
$items['sub'] = $this->findDetailsList((array)$item['sub'], $detailsList);
|
|
|
|
public function findDetailsLists($sort_list, $data)
|
|
|
|
{
|
|
|
|
$detailsList = [];
|
|
|
|
foreach ($data as $v) {
|
|
|
|
if (!empty($v['sub'])){
|
|
|
|
$v['sub'] = $this->custom($v['sub']);
|
|
|
|
}
|
|
|
|
$result[] = $items;
|
|
|
|
$detailsList[$v['id']] = $v;
|
|
|
|
}
|
|
|
|
foreach ($detailsList as $v){
|
|
|
|
if($v['pid'] == 0){
|
|
|
|
$result[] = $v;
|
|
|
|
}else{//放到对应的上级下面
|
|
|
|
$this->addUnderParent($result,$v);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return $result;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Add the current item under its parent in the result array
|
|
|
|
*
|
|
|
|
* @param array $result
|
|
|
|
* @param array $item
|
|
|
|
*/
|
|
|
|
private function addUnderParent(&$result, $item) {
|
|
|
|
$parentId = $item['pid'];
|
|
|
|
foreach ($result as &$parent) {
|
|
|
|
if ($parent['id'] == $parentId) {
|
|
|
|
if (!isset($parent['sub'])) {
|
|
|
|
$parent['sub'] = [];
|
|
|
|
}
|
|
|
|
$parent['sub'][] = $item;
|
|
|
|
return;
|
|
|
|
$result = [];
|
|
|
|
foreach ($sort_list as $val) {
|
|
|
|
if (!empty($val['sub'])){
|
|
|
|
$this->customSort($val['sub'], $detailsList[$val['id']]['sub']);
|
|
|
|
}
|
|
|
|
if (!empty($parent['sub'])) {
|
|
|
|
$this->addUnderParent($parent['sub'], $item);
|
|
|
|
if (empty($detailsList[$val['id']])){
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
$result[] = $detailsList[$val['id']];
|
|
|
|
unset($detailsList[$val['id']]);
|
|
|
|
}
|
|
|
|
$result = array_merge($result, $detailsList);
|
|
|
|
return $this->success($result);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
...
|
...
|
|