📖 File Reader
<?php
namespace app\admin\common;
use app\BaseController;
use think\facade\Db;
use think\facade\Session;
use think\facade\View;
/**
* 菜单逻辑处理
*/
class Common_menus extends BaseController
{
/**
* 获取全部菜单
* @param $admin_id 会员id
*/
static public function menus($admin_id)
{
//权限id
$jurisdiction = db::name("admin")->alias("a")
->join("admin_role b","a.role_id = b.id","LEFT")
->where("a.admin_id = $admin_id")
->value("b.jurisdiction");
if (empty($jurisdiction)){
$jurisdiction = 0;
}
//左侧菜单栏
$config_menus = db::name("config_menus")
->where("superior_id = 0 and is_show = 1 and is_left = 1 and id in ($jurisdiction)")
->order("sort desc")
->select();
$config_menus = json_decode($config_menus,true);
foreach ($config_menus as $k => $v){
$list = db::name("config_menus")->where("superior_id = {$v['id']} and is_show = 1 and is_left = 1 and id in ($jurisdiction)")
->order("sort desc")->select();
$config_menus[$k]["list_count"] = count($list);
$config_menus[$k]["list"] = $list;
}
return View::assign([
'config_menus'=>$config_menus,
]);
}
/**
* 全部权限获取
* @param $role_id 角色id
*/
static function jurisdiction($role_id=0)
{
/*验证该角色是否有那些权限*/
$jurisdiction = db::name("admin_role")->where("id = $role_id")->value("jurisdiction");
$jurisdiction_arr = array();//权限信息
if (!empty($jurisdiction)){
$jurisdiction_arr = explode(',',$jurisdiction);
}
$config_list = db::name("config_menus")->where("is_show = 1")->order("sort desc")->field("id,superior_id,title,url,describe")->select();
$config_list = json_decode($config_list,true);
foreach ($config_list as $key => $value){
$config_list[$key]["is_checked"] = 0;
foreach ($jurisdiction_arr as $key2 => $value2) {
if ($value["id"] == $value2) {
$config_list[$key]["is_checked"] = 1;
}
}
}
/*重装数组*/
$arr = array();
foreach ($config_list as $k => $v){
$v["list"] = array();
if ($v["superior_id"] == 0){
//第一层
$arr[$k] = $v;
foreach ($config_list as $k2 => $v2){
$v2["list"] = array();
//第二层
if ($v["id"] == $v2["superior_id"]){
foreach ($config_list as $k3 => $v3){
//第三层
if ($v2["id"] == $v3["superior_id"]){
$v2["list"][] = $v3;
}
}
$arr[$k]["list"][] = $v2;
}
}
}
}
return $arr;
}
/**
* 页面权限
* @param $admin_id 管理员id
*/
static function table_jurisdiction($admin_id)
{
$role_id = db::name("admin")->where("admin_id = $admin_id")->value("role_id");
$jurisdiction = db::name("admin_role")->where("id = $role_id")->value("jurisdiction");
$jurisdiction_arr = array();//权限信息
if (!empty($jurisdiction)){
$jurisdiction_arr = explode(',',$jurisdiction);
}
$list = db::name("config_menus")->where("is_left = 0")->field("id")->select();
$list = json_decode($list,true);
$list_data = array();
foreach ($list as $key => $value){
$name = 'is'.$value["id"].'_show';
$list_data[$name] = 0;
foreach ($jurisdiction_arr as $key2 => $value2) {
if ($value["id"] == $value2) {
$list_data[$name] = 1;
}
}
}
return $list_data;
}
/**
* 获取自己这条线的全部上级(默认包含自己)
* @param int $id 菜单id
* @param int $type 是否包含自己:1是 0否
*/
static function menu_wire($id=0,$type=1)
{
if (empty($type)) {
$str_id = '';
} else {
$str_id = $id . ',';
}
while (!empty($id)) {
$superior_id = db::name("config_menus")->where("id = $id")->value('superior_id');
if (!empty($superior_id)) {
$str_id .= $superior_id . ',';
}
//重新定义
$id = $superior_id;
}
return substr($str_id, 0, strlen($str_id) - 1);
}
}