Files
CompanyProject/芳林公司项目/www.zhiyuanhelp.com/application/admin/controller/api/Node.php
2024-09-27 01:32:49 +08:00

66 lines
2.6 KiB
PHP

<?php
/*
* 系统节点接口
* */
namespace app\admin\controller\api;
use app\admin\controller\AdminController;
class Node extends AdminController {
/**
* 获取对应角色的节点数据
* @param $id
* @return \think\response\Json
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\ModelNotFoundException
* @throws \think\exception\DbException
*/
public function getNodeTree($id) {
$list = [];
$module = model('node')->where(['type' => 1, 'is_auth' => 1])->order(['node' => 'asc'])->select();
foreach ($module as $k => $val) {
$list[$k] = [
'title' => $this->__biuldGetNodeTree($val['node'], $val['title']),
'value' => $val['id'],
'data' => [],
];
$is_checked = model('auth_node')->where(['auth' => $id, 'node' => $val['id']])->find();
!empty($is_checked) && $list[$k]['checked'] = true;
$data_1 = model('node')->where([['type', '=', 2], ['is_auth', '=', 1], ['node', 'LIKE', "{$val['node']}/%"]])->select();
foreach ($data_1 as $k_1 => $val_1) {
$list[$k]['data'][$k_1] = [
'title' => $this->__biuldGetNodeTree($val_1['node'], $val_1['title']),
'value' => $val_1['id'],
'data' => [],
];
$is_checked_1 = model('auth_node')->where(['auth' => $id, 'node' => $val_1['id']])->find();
!empty($is_checked_1) && $list[$k]['data'][$k_1]['checked'] = true;
$data_2 = model('node')->where([['type', '=', 3], ['is_auth', '=', 1], ['node', 'LIKE', "{$val_1['node']}/%"]])->select();
foreach ($data_2 as $k_2 => $val_2) {
$list[$k]['data'][$k_1]['data'][$k_2] = [
'title' => $this->__biuldGetNodeTree($val_2['node'], $val_2['title']),
'value' => $val_2['id'],
'data' => [],
];
$is_checked_2 = model('auth_node')->where(['auth' => $id, 'node' => $val_2['id']])->find();
!empty($is_checked_2) && $list[$k]['data'][$k_1]['data'][$k_2]['checked'] = true;
}
}
}
return json($list);
}
/**
* 组合数据
* @param $node
* @param $title
* @return string
*/
protected function __biuldGetNodeTree($node, $title) {
if (empty($title)) return $node;
else return $title . '【' . $node . '】';
}
}