作者 lyh

gx

... ... @@ -31,8 +31,13 @@ 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();
if(!empty($lists)){
foreach ($lists as $v){
$v = (array)$v;
if ($v['pid'] == 0) {
... ... @@ -40,13 +45,6 @@ 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']);
$detailsList = $this->getIdDetailsList($data);
$data = $this->findDetailsLists($sort_list,$detailsList);
}
}
$this->response('success',Code::SUCCESS,$data);
}
... ... @@ -58,53 +56,24 @@ class NavController extends BaseController
* @method :post
* @time :2023/12/18 14:54
*/
public function findDetailsLists($sort_list, $detailsList)
{
public function findDetailsList($sort_list,$detailsList) {
$result = [];
foreach ($sort_list as $val) {
$val = (array)$val;
if (!empty($val['sub'])){
$this->findDetailsLists($val['sub'], $detailsList[$val['id']]['sub']);
}
if (empty($detailsList[$val['id']])){
continue;
}
@file_put_contents(storage_path('logs/lyh_error.log'), var_export($detailsList[$val['id']], true) . PHP_EOL, FILE_APPEND);
$result[] = $detailsList[$val['id']];
unset($detailsList[$val['id']]);
}
// $result = array_merge($result, $detailsList);
return $this->success($result);
}
public function getSortList($result){
foreach ($result as $k => $v){
if(!empty($v['sub'])){
$this->getSortList($v['sub']);
}else{
$v = array_values($v);
$result[$k] = $v;
}
}
return $this->success($result);
}
/**
* @remark :根据id组装数据
* @name :getDetailsList
* @author :lyh
* @method :post
* @time :2023/12/20 18:52
*/
public function getIdDetailsList($data){
$detailsList = [];
foreach ($data as $v) {
if (!empty($v['sub'])){
$v['sub'] = $this->getIdDetailsList($v['sub']);
}
$detailsList[$v['id']] = $v;
}
return $this->success($detailsList);
foreach ($sort_list 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);
}
$result[] = $items;
}
return $result;
}
/**
... ...