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

一. 关键场景说明

公司

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

二. 示例说明

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

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

组织表:sys_org

idorg_nameorg_codeoauth_codeparent_id
1上海总部shzb1-
2人事部rsb1-2-1
3技术部jsb1-3-1
4销售部xsb1-4-1
5财务组cwz1-2-5-2

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

员工表:sys_employee

idnamesexmobilephoneorg_managepositionorg_idoauth_code
1老板13700000001老板11-@1
2张三13700000011员工21-2-@2
3李四13700000020总经理21-2-@3
4王五13700000040员工51-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老板13700000001老板11-@1
2张三13700000011员工21-2-@2
3李四13700000020总经理21-2-@3
4王五男 13700000040员工51-2-5-@4

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

select * from sys_employee where oauth_code like '1-2-%'
2张三13700000011员工21-2-@2
3李四13700000020总经理21-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李四13700000020总经理21-2-@3

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

 select * from sys_employee where oauth_code  like  '1-2-%'  or  oauth_code   like '1-3-%' 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值