请选择 进入手机版 | 继续访问电脑版
收起左侧

无限极分类

[复制链接]

552

主题

569

帖子

1万

积分

管理员

站长

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分
16427

灌水之王

QQ
发表于 2019-10-11 15:14:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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": []
        }
    ]
}




上一篇:解决安装谷歌浏览器扩展程序出现 程序包无效得到问题
下一篇:将xlsx文件转换为pdf
QQ:2424004764
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|客户端下载|先锋者IT论坛 ( 湘ICP备16007032号湘公网安备 43030202001052号

GMT+8, 2024-3-29 15:21 , Processed in 0.109280 second(s), 16 queries , File On.

Powered by Discuz! X3.3

© 2017 bbs.fologde.com. Template By Gstudio

快速回复 返回顶部 返回列表