122 lines
3.5 KiB
PHP
Executable File
122 lines
3.5 KiB
PHP
Executable File
<?php
|
|
|
|
namespace app\project\controller;
|
|
|
|
use controller\BasicApi;
|
|
use service\DataService;
|
|
use service\NodeService;
|
|
use service\ToolsService;
|
|
use think\Db;
|
|
use think\facade\Request;
|
|
|
|
/**
|
|
* 系统功能节点管理
|
|
* Class Node
|
|
* @package app\admin\controller
|
|
* @author Vilson
|
|
*/
|
|
class Node extends BasicApi
|
|
{
|
|
|
|
/**
|
|
* 指定当前默认模型
|
|
* @var string
|
|
*/
|
|
public $table = 'ProjectNode';
|
|
|
|
/**
|
|
* 显示节点列表
|
|
* @return string
|
|
*/
|
|
public function index()
|
|
{
|
|
$module = 'project';
|
|
!$module && $module = '';
|
|
|
|
$nodes = ToolsService::arr2table(NodeService::get([], [], $module), 'node', 'pnode');
|
|
$groups = [];
|
|
foreach ($nodes as $node) {
|
|
$pnode = explode('/', $node['node'])[0];
|
|
if ($node['node'] === $pnode) {
|
|
$groups[$pnode]['node'] = $node;
|
|
}
|
|
$groups[$pnode]['list'][] = $node;
|
|
}
|
|
$this->success('', ['nodes' => $nodes, 'groups' => $groups]);
|
|
}
|
|
|
|
public function allList()
|
|
{
|
|
// $module = Request::post('module');
|
|
$node = Request::post('node');
|
|
$where = [];
|
|
// if ($module) {
|
|
// $where[] = ['module', '=', $module];
|
|
// }
|
|
if ($node) {
|
|
$where[] = ['node', 'like', "%{$node}%"];
|
|
}
|
|
$list = Db::name('ProjectNode')->where($where)->select();
|
|
if ($node == '#') {
|
|
$list[] = ['node' => '#', 'title' => '无节点权限'];
|
|
}
|
|
$this->success('', $list);
|
|
}
|
|
|
|
/**
|
|
* 清理无效的节点记录
|
|
* @throws \think\Exception
|
|
* @throws \think\exception\PDOException
|
|
*/
|
|
public function clear()
|
|
{
|
|
$nodes = array_keys(NodeService::get());
|
|
if (false !== Db::name('projectNode')->whereNotIn('node', $nodes)->delete()) {
|
|
$this->success('清理无效节点记录成功!', '');
|
|
}
|
|
$this->error('清理无效记录失败,请稍候再试!');
|
|
}
|
|
|
|
/**
|
|
* 保存节点变更
|
|
* @throws \think\Exception
|
|
* @throws \think\exception\PDOException
|
|
*/
|
|
public function save()
|
|
{
|
|
if ($this->request->isPost()) {
|
|
list($post, $data) = [json_decode($this->request->post('list')), []];
|
|
foreach ($post as $vo) {
|
|
if (!empty($vo->node)) {
|
|
$data['node'] = $vo->node;
|
|
if ($vo->name) {
|
|
foreach ($vo->name as $key => $name) {
|
|
$data[$name->name] = $vo->value[$key]->value;
|
|
}
|
|
}
|
|
}
|
|
//根据模块将权限节点插入对应的表
|
|
if (strpos('/', $data['node']) !== -1) {
|
|
$module = explode('/', $data['node'])[0];
|
|
} else {
|
|
$module = $data['node'];
|
|
}
|
|
$data['module'] = $module;
|
|
switch ($module) {
|
|
case 'project':
|
|
$table = 'ProjectNode';
|
|
break;
|
|
default:
|
|
// $table = $this->table;
|
|
}
|
|
!empty($data) && isset($table) && DataService::save($table, $data, 'node');
|
|
// !empty($data) && DataService::save($this->table, $data, 'node');
|
|
|
|
}
|
|
$this->success('参数保存成功!', '');
|
|
}
|
|
$this->error('访问异常,请重新进入...');
|
|
}
|
|
|
|
}
|