TaoLer/app/admin/controller/AuthRule.php

203 lines
4.5 KiB
PHP
Raw Normal View History

2020-01-01 13:17:19 +08:00
<?php
namespace app\admin\controller;
use app\common\controller\AdminController;
2022-11-18 10:31:44 +08:00
use think\App;
2020-01-01 13:17:19 +08:00
use think\facade\Request;
use think\facade\Db;
use think\facade\View;
use app\admin\model\AuthRule as AuthRuleModel;
class AuthRule extends AdminController
{
2022-11-18 10:31:44 +08:00
//
public function __construct(App $app)
{
parent::__construct($app);
$this->model = new AuthRuleModel();
}
2021-12-15 15:46:04 +08:00
/**
* 菜单列表
*/
2020-01-01 13:17:19 +08:00
public function index()
{
if(Request::isAjax()){
2022-11-18 10:31:44 +08:00
return $this->model->getAuthRuleTree();
2020-01-01 13:17:19 +08:00
}
return View::fetch();
}
2021-05-10 13:59:58 +08:00
2021-12-15 15:46:04 +08:00
/**
*权限树
* 支持获取三级菜单
*/
2021-05-10 13:59:58 +08:00
public function tree()
{
//$res = $this->treeTr($this->getMenus());
//var_dump($res);
2021-12-15 15:46:04 +08:00
$result = $this->getMenus(1);
2021-05-10 13:59:58 +08:00
$count = count($result);
$tree = [];
if($result){
$tree = ['code'=>0,'msg'=>'','count'=>$count];
$res = []; //auth_rule储存数据表中的表结构
foreach($result as $k => $v){
//第一层子权限
$children = [];
if(isset($v['children'])){
foreach($v['children'] as $m => $j){
//第二层子权限
$chichi = [];
if(isset($j['children'])){
//第三层子权限
foreach($j as $s){
if(isset($s['children'])){
$chichi[] = ['id'=>$s['id'],'title'=>$s['title'],'pid'=>$s['pid']]; //子数据的子数据
}
}
}
//if($j['level'] < 3){}
$children[] = ['id'=>$j['id'],'title'=>$j['title'],'pid'=>$j['pid'],'children'=>$chichi]; //子数据
}
}
2021-12-15 15:46:04 +08:00
$data[] = ['id'=>$v['id'],'title'=>$v['title'],'pid'=>$v['pid'],'children'=>$children];
2021-05-10 13:59:58 +08:00
}
2021-12-15 15:46:04 +08:00
//构造一个顶级菜单pid=0的数组。把权限放入顶级菜单下子权限中
$tree['data'][] = ['id'=>0,'title'=>'顶级','pid'=>0,'children'=>$data];
2021-05-10 13:59:58 +08:00
}
return json($tree);
}
2020-01-01 13:17:19 +08:00
//添加权限
public function add()
{
if(Request::isAjax()){
$data = Request::param();
2022-11-18 10:31:44 +08:00
//层级level
$plevel = Db::name('auth_rule')->field('level')->find($data['pid']);
2020-01-01 13:17:19 +08:00
if($plevel){
$data['level'] = $plevel['level']+1;
} else {
$data['level'] = 0;
}
2022-11-18 10:31:44 +08:00
return $this->model->saveRule($data);
2020-01-01 13:17:19 +08:00
}
2022-11-18 10:31:44 +08:00
$auth_rules = $this->model->getAuthRuleTree();
2020-01-01 13:17:19 +08:00
View::assign('AuthRule',$auth_rules);
return View::fetch();
}
//权限编辑
public function edit()
{
$rule = new AuthRuleModel();
if(Request::isAjax()){
2022-11-18 10:31:44 +08:00
$data = Request::param(['id','pid','title','name','icon','sort','ismenu']);
//层级level
$ruId = $rule->find($data['pid']); //查询出上级ID
2020-01-01 13:17:19 +08:00
if($ruId){
$plevel = $ruId->level; //上级level等级
$data['level'] = $plevel+1;
} else {
$data['level'] = 0;
}
2022-11-18 10:31:44 +08:00
$zi = $this->model->where('pid',$data['id'])->select();//查询出下级
if(!empty($zi)){
$zi->update(['level'=>$data['level']+1]);
}
2020-01-14 15:47:11 +08:00
2022-11-18 10:31:44 +08:00
$rule = $this->model->find($data['id']);
return $rule->saveRule($data);
2020-01-01 13:17:19 +08:00
}
2022-11-18 10:31:44 +08:00
$auth_rules = $this->model->getAuthRuleTree();
$rules = $this->model->find(input('id'));
2020-01-01 13:17:19 +08:00
View::assign(['AuthRule'=>$auth_rules,'rules'=>$rules]);
return View::fetch();
}
//权限开关
2020-01-09 18:03:33 +08:00
public function check()
2020-01-01 13:17:19 +08:00
{
$data = Request::param();
//获取状态
$res = Db::name('auth_rule')->where('id',$data['id'])->save(['status' => $data['status']]);
if($res){
if($data['status'] == 1){
return json(['code'=>0,'msg'=>'权限开启','icon'=>6]);
} else {
return json(['code'=>0,'msg'=>'权限禁用','icon'=>5]);
}
}else {
2020-01-14 15:47:11 +08:00
return json(['code'=>-1,'msg'=>'审核出错']);
2020-01-01 13:17:19 +08:00
}
}
//菜单显示控制
public function menuShow()
{
$data = Request::param();
$rules = Db::name('auth_rule')->save($data);
if($rules){
2022-11-18 10:31:44 +08:00
if($data['ismenu'] == 1){
2020-01-14 15:47:11 +08:00
return json(['code'=>0,'msg'=>'设置菜单显示','icon'=>6]);
2020-01-01 13:17:19 +08:00
} else {
2020-01-14 15:47:11 +08:00
return json(['code'=>0,'msg'=>'取消菜单显示','icon'=>5]);
2020-01-01 13:17:19 +08:00
}
}else{
2020-01-14 15:47:11 +08:00
$res = ['code'=>-1,'msg'=>'设置失败'];
2020-01-01 13:17:19 +08:00
}
return json($res);
}
//排序
public function sort()
{
$data = Request::param();
$rules = Db::name('auth_rule')->save($data);
if($rules){
2020-01-14 15:47:11 +08:00
$res = ['code'=>0,'msg'=>'排序成功'];
2020-01-01 13:17:19 +08:00
}else{
2020-01-14 15:47:11 +08:00
$res = ['code'=>-1,'msg'=>'排序失败'];
2020-01-01 13:17:19 +08:00
}
return json($res);
}
public function delete($id)
2020-01-14 15:47:11 +08:00
{
$pids = AuthRuleModel::where('pid',$id)->select();
if($pids)
{
$result = $pids->delete();
}
2020-01-01 13:17:19 +08:00
$rule = AuthRuleModel::find($id);
$result = $rule->delete();
if($result){
2020-01-14 15:47:11 +08:00
$res = ['code'=>0,'msg'=>'删除成功'];
2020-01-01 13:17:19 +08:00
} else {
2020-01-14 15:47:11 +08:00
$res = ['code'=>-1,'msg'=>'删除失败'];
2020-01-01 13:17:19 +08:00
}
return json($res);
}
}