业务系统数据权限控制(可生产环境用)

一. 关键场景说明

公司

  • 场景:公司是最先存在的,对应现实场景相当于去工商局登记注册公司,这个时候公司可以没有组织架构,当你有营业执照,有办公场地,有经营范围等;
  • 数据表:sys_company
    账号
  • 场景:老板招聘第一员工,给你开一个门禁账号如(账号:13700000001),让做一些超级权限的数据,比如把组织架构弄起来
  • 数据表: sys_user
    组织架构
  • 场景:组织架构是公司上下管理的载体,对应到技术上,它也是数据权限的载体,如果某个功能要做数据权限分级控制,账号必须的关联到组织架构
  • 数据表: sys_org
    员工
  • 场景:员工是一个真实存在的人,有姓名,性别,年龄,学历,他可以跟账号去绑定
  • 对应的表:sys_employee

二. 示例说明

权限如何控制(通过员工管理功能演示权限控制):
组织架构如下: 账号:13700000001关联 员工张三,员工张三和李四在人事部门下面,人事部下有个财务组,王五在财务组下,老板在上海总部下
上海总部
   人事部
     财务组
     王五(工号:0005,账号:13700000003,部门管理:管理员,职位:员工)
   张三 (工号:0002,账号:13700000001,部门管理:管理员,职位:员工)
   李四 (工号:0003,账号:13700000002,部门管理:成员,职位:总经理)
   技术部
   销售部
   老板 (工号:0001,账号:13700000000,部门管理:管理员,职位:老板)

数据权限只跟部门管理有关系,跟职位没关系。 职位是总经理,但在部门是普通成员,如李四,在数据权限上也只能看自己的数据。

组织表:sys_org

id org_name org_code oauth_code parent_id
1 上海总部 shzb 1-
2 人事部 rsb 1-2- 1
3 技术部 jsb 1-3- 1
4 销售部 xsb 1-4- 1
5 财务组 cwz 1-2-5- 2

oauth_code :权限控制字段,构成格式 oauth_code = 父oauth_code + ID(当前行的自增长列)

员工表:sys_employee

id name sex mobilephone org_manage position org_id oauth_code
1 老板 1370000000 1 老板 1 1-@1
2 张三 1370000001 1 员工 2 1-2-@2
3 李四 1370000002 0 总经理 2 1-2-@3
4 王五 1370000004 0 员工 5 1-2-5-@4

org_manage: 部门管理,1代表是,0代表不是
oauth_code: 权限字段,oauth_code = 对应部门的oauth_code + @ + 员工ID(当前行的自增长列) ,@ 是为了好区分,后面是员工ID ,

查询说明:
以老板登录(账号:13700000000)进来,数据权限控制:
通过老板的账号获取所在组织权限 oauth_code 是 1- ,由于老板是管理员,他的查询条件就是 like ‘1-%’ , 通过如下可以查出上面的4个员工

select * from sys_employee where oauth_code like '1-%'
1 老板 1370000000 1 老板 1 1-@1
2 张三 1370000001 1 员工 2 1-2-@2
3 李四 1370000002 0 总经理 2 1-2-@3
4 王五 男 1 370000004 0 员工 5 1-2-5-@4

以张三登录(账号:13700000001)进来,数据权限控制:
通过张三的账号获取所在组织权限 oauth_code 是 1-2- ,由于张三是管理员,他的查询条件就是 like ‘1-%’ , 通过如下可以查出上面的2个员工

select * from sys_employee where oauth_code like '1-2-%'
2 张三 1370000001 1 员工 2 1-2-@2
3 李四 1370000002 0 总经理 2 1-2-@3

以李四登录(账号:13700000002)进来,数据权限控制:
通过李四的账号获取所在组织权限 ,都是在人事部, 所以 oauth_code 也是 1-2- ,由于李四是普通成员,他的查询条件就是
like ‘1-2-@3%’ ,注意:这个时候就要加 @3 ,3 是李四的主键ID, 通过如下只能查到自己的

select * from sys_employee where oauth_code like '1-2-@3%'
3 李四 1370000002 0 总经理 2 1-2-@3

如果员工在多部门可以如下构建

 select * from sys_employee where oauth_code  like  '1-2-%'  or  oauth_code   like '1-3-%' 
发布了12 篇原创文章 · 获赞 0 · 访问量 359

猜你喜欢

转载自blog.csdn.net/weixin_46279293/article/details/104419124