|
|
|
|
<?php
|
|
|
|
|
// +----------------------------------------------------------------------
|
|
|
|
|
// | Description: 菜单
|
|
|
|
|
// +----------------------------------------------------------------------
|
|
|
|
|
// | Author:
|
|
|
|
|
// +----------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
namespace app\admin\model;
|
|
|
|
|
|
|
|
|
|
use think\Db;
|
|
|
|
|
use app\admin\model\Common;
|
|
|
|
|
|
|
|
|
|
class Menu extends Common
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 为了数据库的整洁,同时又不影响Model和Controller的名称
|
|
|
|
|
* 我们约定每个模块的数据表都加上相同的前缀,比如CRM模块用crm作为数据表前缀
|
|
|
|
|
*/
|
|
|
|
|
protected $name = 'admin_menu';
|
|
|
|
|
/**
|
|
|
|
|
* [getDataList 获取列表]
|
|
|
|
|
* @return [array]
|
|
|
|
|
*/
|
|
|
|
|
public function getDataList()
|
|
|
|
|
{
|
|
|
|
|
$cat = new \com\Category('admin_menu', array('id', 'pid', 'title', 'title'));
|
|
|
|
|
$data = $cat->getList('', 0, 'sort');
|
|
|
|
|
return $data;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* [getDataById 根据主键获取详情]
|
|
|
|
|
* @param string $id [主键]
|
|
|
|
|
* @return [array]
|
|
|
|
|
*/
|
|
|
|
|
public function getDataById($id = '')
|
|
|
|
|
{
|
|
|
|
|
$data = $this
|
|
|
|
|
->alias('menu')
|
|
|
|
|
->where('menu.id', $id)
|
|
|
|
|
->join('__ADMIN_RULE__ rule', 'menu.rule_id=rule.id', 'LEFT')
|
|
|
|
|
->field('menu.*, rule.title as rule_name')
|
|
|
|
|
->find();
|
|
|
|
|
if (!$data) {
|
|
|
|
|
$this->error = '暂无此数据';
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
return $data;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 整理菜单树形结构
|
|
|
|
|
* @param array $param [description]
|
|
|
|
|
*/
|
|
|
|
|
protected function getMenuTree()
|
|
|
|
|
{
|
|
|
|
|
$userInfo = $GLOBALS['userInfo'];
|
|
|
|
|
if (!$userInfo) {
|
|
|
|
|
return [];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$u_id = $userInfo['id'];
|
|
|
|
|
if ($u_id === 1) {
|
|
|
|
|
$map['status'] = 1;
|
|
|
|
|
$menusList = Db::name('admin_menu')->where($map)->order('sort asc')->select();
|
|
|
|
|
} else {
|
|
|
|
|
$groups = model('User')->get($u_id)->groups;
|
|
|
|
|
|
|
|
|
|
$ruleIds = [];
|
|
|
|
|
foreach($groups as $k => $v) {
|
|
|
|
|
$ruleIds = array_unique(array_merge($ruleIds, explode(',', $v['rules'])));
|
|
|
|
|
}
|
|
|
|
|
$ruleMap['id'] = array('in', $ruleIds);
|
|
|
|
|
$ruleMap['status'] = 1;
|
|
|
|
|
// 重新设置ruleIds,除去部分已删除或禁用的权限。
|
|
|
|
|
$ruleIds = Db::name('admin_rule')->where($ruleMap)->column('id');
|
|
|
|
|
empty($ruleIds)&&$ruleIds = '';
|
|
|
|
|
$menuMap['status'] = 1;
|
|
|
|
|
$menuMap['rule_id'] = array('in',$ruleIds);
|
|
|
|
|
$menusList = Db::name('admin_menu')->where($menuMap)->order('sort asc')->select();
|
|
|
|
|
}
|
|
|
|
|
if (!$menusList) {
|
|
|
|
|
return [];
|
|
|
|
|
}
|
|
|
|
|
//处理成树状
|
|
|
|
|
// $tree = new \com\Tree();
|
|
|
|
|
// $menusList = $tree->list_to_tree($menusList, 'id', 'pid', 'child', 0, true, array('pid'));
|
|
|
|
|
// $menusList = memuLevelClear($menusList);
|
|
|
|
|
|
|
|
|
|
return $menusList? $menusList: [];
|
|
|
|
|
}
|
|
|
|
|
}
|