Commit 50d3f499 authored by 侯贺政's avatar 侯贺政

权限节点列表,重写无限极分类方法

Signed-off-by: 侯贺政's avatarhouhezheng <houhezheng@romens.cn>
parent a0be0148
...@@ -14,7 +14,7 @@ use app\models\v1\rbacuser\ShopRbacRole; ...@@ -14,7 +14,7 @@ use app\models\v1\rbacuser\ShopRbacRole;
class AuthorityNodeController extends BaseController class AuthorityNodeController extends BaseController
{ {
public $modelClass = 'app\models\v1\authority\AuthorityNode'; public $modelClass = 'app\models\v1\rbacuser\ShopRbacNode';
/** /**
* 递归实现无限极分类 * 递归实现无限极分类
...@@ -46,42 +46,25 @@ class AuthorityNodeController extends BaseController ...@@ -46,42 +46,25 @@ class AuthorityNodeController extends BaseController
} }
/** /**
* 生成相应的节点结构 * 无限极分类
* * @param array $data 节点数据
* @param $array 节点数据 * @return array|null 返回分类好的节点列表
* @param $level 节点级别
* @param $title 节点名称
* @return $list 生成好的节点结构数组
*/ */
protected function make_tree_node($array, $level = 'LEVEL', $title = 'TITLE') protected function generateTree($data)
{ {
$return = array(); $items = array();
if (empty($array)) foreach ($data as $v) {
return $return; $items[$v['ID']] = $v;
//遍历处理数据
foreach ($array as $k => $v) {
$show_name = '';
switch ($v[$level]) {
case 0:
$show_name .= $v[$title];
break;
case 1:
$show_name .= '|-' . $v[$title];
break;
case 2:
$show_name .= '|&nbsp&nbsp&nbsp&nbsp|-' . $v[$title];
break;
case 3:
$show_name .= '|&nbsp&nbsp&nbsp&nbsp|&nbsp&nbsp&nbsp&nbsp|-' . $v[$title];
break;
} }
$tree = array();
$return[$k] = $v; foreach ($items as $k => $item) {
$return[$k]['SHOW_NAME'] = $show_name; if (isset($items[$item['PID']])) {
$items[$item['PID']]['son'][] = &$items[$k];
} else {
$tree[] = &$items[$k];
} }
}
return $return; return $tree;
} }
/** /**
...@@ -102,7 +85,6 @@ class AuthorityNodeController extends BaseController ...@@ -102,7 +85,6 @@ class AuthorityNodeController extends BaseController
* SORT:菜单排序序号, * SORT:菜单排序序号,
* PID:父级菜单ID, * PID:父级菜单ID,
* LEVEL:菜单层级等级(类型-0:项目,1:模块,2:操作,3:动作), * LEVEL:菜单层级等级(类型-0:项目,1:模块,2:操作,3:动作),
* SHOW_NAME:显示名称
* "), * "),
* security={{"Authorization":{}}} * security={{"Authorization":{}}}
* ) * )
...@@ -114,7 +96,7 @@ class AuthorityNodeController extends BaseController ...@@ -114,7 +96,7 @@ class AuthorityNodeController extends BaseController
if (!$data) { if (!$data) {
throw new BadRequestHttpException('没有您需要的数据'); throw new BadRequestHttpException('没有您需要的数据');
} }
$list = $this->make_tree_node($this->getTree($data)); $list = $this->generateTree($data);
return $list; return $list;
} }
......
<?php
namespace app\models\v1\authority;
use app\models\v1\rbacuser\ShopRbacNode;
class AuthorityNode extends ShopRbacNode
{
public $SHOW_NAME; //显示名称
/**
* {@inheritdoc}
*/
public function fields()
{
$fields = parent::fields();
$fields['SHOW_NAME'] = 'SHOW_NAME';
$fields['LEVEL'] = function () {
switch ($this->LEVEL) {
case 0:
$level = '项目';
break;
case 1:
$level = '模块';
break;
case 2:
$level = '操作';
break;
case 3:
$level = '动作';
break;
default:
$level = '';
break;
}
return $level;
};
return $fields;
}
/**
* 节点列表
*
* @return array|null 返回节点列表
*/
public function nodeList()
{
$query = static::find()
->select(['ID', 'NAME', 'TITLE', 'STATUS', 'IS_MENU', 'IS_TOP_MENU', 'IS_DEFAULT_SHOW', 'REMARK', 'SORT', 'PID', 'LEVEL'])
->orderBy("SORT ASC")
->all();
return $query;
}
}
...@@ -82,4 +82,19 @@ class ShopRbacNode extends BaseModel ...@@ -82,4 +82,19 @@ class ShopRbacNode extends BaseModel
->asArray() ->asArray()
->all(); ->all();
} }
/**
* 节点列表
*
* @return array|null 返回节点列表
*/
public function nodeList()
{
$query = static::find()
->select(['ID', 'NAME', 'TITLE', 'STATUS', 'IS_MENU', 'IS_TOP_MENU', 'IS_DEFAULT_SHOW', 'REMARK', 'SORT', 'PID', 'LEVEL'])
->orderBy("SORT ASC")
->asArray()
->all();
return $query;
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment