马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
需要用到三张表
aa_role_auth 角色可用权限
aa_role_operation 所有操作
aa_employees_role 角色
表数据
aa_employees_role.sql
aa_role_auth.sql
aa_role_operation.sql
aa_role_auth 表结构:
[SQL] 纯文本查看 复制代码
CREATE TABLE `aa_role_auth` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '角色权限',
`role_id` int(11) NOT NULL COMMENT '角色id',
`operation_id` int(11) NOT NULL COMMENT '操作id',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
aa_role_operation 表结构:
[SQL] 纯文本查看 复制代码
CREATE TABLE `aa_role_operation` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '模块表id 自增主键',
`name` varchar(100) DEFAULT NULL COMMENT '操作名',
`url` varchar(100) DEFAULT NULL COMMENT '操作url',
`pid` int(11) NOT NULL DEFAULT '0' COMMENT '上级操作id',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='所有的操作列表--';
aa_employees_role 表结构:
[SQL] 纯文本查看 复制代码
CREATE TABLE `aa_employees_role` (
`role_id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID,主键自增',
`role_name` varchar(64) NOT NULL COMMENT '角色名称',
`role_describe` varchar(255) DEFAULT NULL COMMENT '角色备注',
PRIMARY KEY (`role_id`) USING BTREE,
KEY `role_name` (`role_name`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='雇员角色表';
查找某个角色的权限 接收一个 role_id 参数
路由[PHP] 纯文本查看 复制代码
// 获取某个角色所有权限操作项
Route::rule('getAllRoleOperation', 'role/index/getAllRoleOperation', 'GET');
php:
[PHP] 纯文本查看 复制代码
/**
* todo 获取某个角色所有权限操作项
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\ModelNotFoundException
* @throws \think\exception\DbException
*/
public function getAllRoleOperation()
{
$role_id = $this->request->get('role_id', '', 'intval'); // 角色id
if(!$role_id){
$this->json_fail('role_id 为空!');
}
$OperationTable = new RoleOperation;
$RoleAuthTable = new RoleAuth;
$all_one_menu = $OperationTable->select();
$menu = $this->getTree($all_one_menu, 0, $RoleAuthTable, $role_id);
$this->json_success($menu);
}
/**
* todo 递归查找子菜单
* @param $data
* @param int $pId
* @return array
*/
public function getTree($data, $pId = 0, $RoleAuthTable, $role_id)
{
$tree = [];
foreach($data as $k => &$v){
if($v['pid'] == $pId){ // 找到子菜单
// 判断是否具有权限
$is_auth = $RoleAuthTable->where(['role_id'=>$role_id, 'operation_id'=>$v['id']])->find();
// 为1表示当前操作有权限
if($is_auth){
$v['auth'] = 1;
}else{
$v['auth'] = 0;
}
// 查找子菜单
$v['child_menu'] = $this->getTree($data, $v['id'], $RoleAuthTable, $role_id);
$tree[] = $v;
}
}
return $tree;
}
最终结果
[PHP] 纯文本查看 复制代码
{
"code": 200,
"msg": "请求成功",
"data": [
{
"id": 1,
"name": "总览",
"url": "overview",
"pid": 0,
"auth": 1,
"child_menu": [
{
"id": 2,
"name": "总用户数",
"url": null,
"pid": 1,
"auth": 1,
"child_menu": []
},
{
"id": 3,
"name": "今日新增用户数",
"url": null,
"pid": 1,
"auth": 0,
"child_menu": []
},
{
"id": 4,
"name": "昨日新增用户数",
"url": null,
"pid": 1,
"auth": 0,
"child_menu": []
},
{
"id": 5,
"name": "总订单数",
"url": null,
"pid": 1,
"auth": 0,
"child_menu": []
},
{
"id": 6,
"name": "今日订单数",
"url": null,
"pid": 1,
"auth": 0,
"child_menu": []
},
{
"id": 7,
"name": "昨日订单数",
"url": null,
"pid": 1,
"auth": 0,
"child_menu": []
},
{
"id": 8,
"name": "总订单金额",
"url": null,
"pid": 1,
"auth": 0,
"child_menu": []
},
{
"id": 9,
"name": "今日订单总金额",
"url": null,
"pid": 1,
"auth": 0,
"child_menu": []
},
{
"id": 10,
"name": "昨日订单总金额",
"url": null,
"pid": 1,
"auth": 0,
"child_menu": []
},
{
"id": 11,
"name": "数据分析展示",
"url": null,
"pid": 1,
"auth": 0,
"child_menu": []
}
]
},
{
"id": 12,
"name": "客户管理",
"url": "customer",
"pid": 0,
"auth": 0,
"child_menu": [
{
"id": 13,
"name": "查看全部客户",
"url": null,
"pid": 12,
"auth": 0,
"child_menu": []
},
{
"id": 14,
"name": "查看我组客户",
"url": null,
"pid": 12,
"auth": 0,
"child_menu": []
},
{
"id": 15,
"name": "查看我的客户",
"url": null,
"pid": 12,
"auth": 0,
"child_menu": []
},
{
"id": 16,
"name": "查看未分组客户",
"url": null,
"pid": 12,
"auth": 0,
"child_menu": []
},
{
"id": 17,
"name": "新建用户",
"url": null,
"pid": 12,
"auth": 0,
"child_menu": []
},
{
"id": 18,
"name": "修改用户信息",
"url": null,
"pid": 12,
"auth": 0,
"child_menu": []
},
{
"id": 19,
"name": "查看用户订单",
"url": null,
"pid": 12,
"auth": 0,
"child_menu": []
},
{
"id": 20,
"name": "导出所有用户",
"url": null,
"pid": 12,
"auth": 0,
"child_menu": []
},
{
"id": 21,
"name": "导出选中用户",
"url": null,
"pid": 12,
"auth": 0,
"child_menu": []
},
{
"id": 22,
"name": "生成推广二维码",
"url": null,
"pid": 12,
"auth": 0,
"child_menu": []
},
{
"id": 23,
"name": "给选中的用户发送消息",
"url": null,
"pid": 12,
"auth": 0,
"child_menu": []
},
{
"id": 24,
"name": "给所有用户发送消息",
"url": null,
"pid": 12,
"auth": 0,
"child_menu": []
}
]
},
{
"id": 25,
"name": "订单管理",
"url": "order",
"pid": 0,
"auth": 0,
"child_menu": []
},
{
"id": 26,
"name": "报表管理",
"url": null,
"pid": 0,
"auth": 0,
"child_menu": [
{
"id": 27,
"name": "查看公司业绩",
"url": null,
"pid": 26,
"auth": 0,
"child_menu": []
},
{
"id": 28,
"name": "查看我组业绩",
"url": null,
"pid": 26,
"auth": 0,
"child_menu": []
},
{
"id": 29,
"name": "查看个人业绩",
"url": null,
"pid": 26,
"auth": 0,
"child_menu": []
},
{
"id": 30,
"name": "数据分析",
"url": null,
"pid": 26,
"auth": 0,
"child_menu": [
{
"id": 31,
"name": "日期搜索",
"url": null,
"pid": 30,
"auth": 0,
"child_menu": []
},
{
"id": 32,
"name": "查看公司业绩",
"url": null,
"pid": 30,
"auth": 0,
"child_menu": []
},
{
"id": 33,
"name": "查看个人业绩",
"url": null,
"pid": 30,
"auth": 0,
"child_menu": []
},
{
"id": 34,
"name": "查看我组业绩",
"url": null,
"pid": 30,
"auth": 0,
"child_menu": []
}
]
},
{
"id": 35,
"name": "数据列表",
"url": null,
"pid": 26,
"auth": 0,
"child_menu": [
{
"id": 36,
"name": "日期搜索",
"url": null,
"pid": 35,
"auth": 0,
"child_menu": []
},
{
"id": 37,
"name": "查看客户总数",
"url": null,
"pid": 35,
"auth": 0,
"child_menu": []
},
{
"id": 38,
"name": "查看我组客户",
"url": null,
"pid": 35,
"auth": 0,
"child_menu": []
},
{
"id": 39,
"name": "查看我的客户",
"url": null,
"pid": 35,
"auth": 0,
"child_menu": []
},
{
"id": 40,
"name": "查看公司总订单",
"url": null,
"pid": 35,
"auth": 0,
"child_menu": []
},
{
"id": 41,
"name": "查看我组订单",
"url": null,
"pid": 35,
"auth": 0,
"child_menu": []
},
{
"id": 42,
"name": "查看我的订单",
"url": null,
"pid": 35,
"auth": 0,
"child_menu": []
},
{
"id": 43,
"name": "查看公司业绩",
"url": null,
"pid": 35,
"auth": 0,
"child_menu": []
},
{
"id": 44,
"name": "查看我组业绩",
"url": null,
"pid": 35,
"auth": 0,
"child_menu": []
},
{
"id": 45,
"name": "查看个人业绩",
"url": null,
"pid": 35,
"auth": 0,
"child_menu": []
},
{
"id": 46,
"name": "导出数据",
"url": null,
"pid": 35,
"auth": 0,
"child_menu": []
}
]
}
]
},
{
"id": 47,
"name": "员工账号",
"url": "EmployeesList",
"pid": 0,
"auth": 0,
"child_menu": []
},
{
"id": 48,
"name": "消息管理",
"url": "message",
"pid": 0,
"auth": 0,
"child_menu": []
},
{
"id": 49,
"name": "型号列表",
"url": "model",
"pid": 0,
"auth": 0,
"child_menu": []
},
{
"id": 50,
"name": "供货商列表",
"url": "ProductPrice",
"pid": 0,
"auth": 0,
"child_menu": []
}
]
}
|