2024-01-03 09:54:57 +08:00

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('访问异常,请重新进入...');
}
}