什么是数据权限
数据权限无非就是某人只能看到某些数据,这些数据是可能是属于自己直接操作的,也可能是间接操作的。
场景1、 业务员A在业务员B某个订单上查看了某某客户对某某产品的销售单价,在某某搜搜框中搜出其他业务员的订单信息,可以随意的查看其他人的订单信息,其他人的业务员客户信息,其他人负责的产品信息,这无疑不是对系统健全的挑战。
场景2、 某业务主管看到公司某产品的平均毛利率,某客户的平均毛利率,重则带着下面一群小弟出去创业,称为公司的竞争对手,这无疑会对公司造成损失。
某业务员A想知道自己有哪些客户,于是打开了客户管理界面,看到的客户全是自己相关的,假如没有数据权限的设定 ,会看到有部分不属于自己负责客户。如何统计出某业务主管自己部门销售量多的销售呢?
有哪些数据权限
数据权限可以为后期操作做出等级的分级。CRM系统中数据权限有五种:
一、全部,当选择全部时,该员工会看到所有的数据信息,多用于超级管理员或总裁级别;
二、本部门及下属部门,该员工会看到本部门的及所有子部门的数据信息,多用于总监级别;
三、仅本部门,该员工只能看到本部门的数据信息,多用于部门经理级别;
四、自己发布或参与的,该员工只能看到和自己有关的数据信息,不会看到别人的数据信息,多用于普通员工;
五、自定义部门,后期该员工可以看到自定义的部门有关的数据信息。
如何实现数据权限
1.数据权限是和角色进行绑定的
对应的页面是:系统管理->权限管理->角色管理
2.后端使用AOP+自定义注解实现数据权限
2.1 利用sql实现数据权限
2.1.1 举例:假如我要查询线索表里的数据
SELECT
clue.*,
r.create_by AS assign_by,
r.user_name AS OWNER,
r.create_time AS owner_time
FROM
tb_clue clue
LEFT JOIN tb_assign_record r ON clue.id = r.assign_id
WHERE
r.latest = '1'
AND r.type = '0'
AND clue. STATUS IN ('1', '2')
ORDER BY
clue.create_time DESC
2.1.2 全部数据权限的SQL
SELECT
clue.*,
r.create_by AS assign_by,
r.user_name AS OWNER,
r.create_time AS owner_time
FROM
tb_clue clue
LEFT JOIN tb_assign_record r ON clue.id = r.assign_id
WHERE
r.latest = '1'
AND r.type = '0'
AND clue. STATUS IN ('1', '2')
ORDER BY
clue.create_time DESC
在全部数据权限下,什么都不用修改
2.1.3仅本人数据权限的SQL
SELECT
clue.*,
r.create_by AS assign_by,
r.user_name AS OWNER,
r.create_time AS owner_time
FROM
tb_clue clue
LEFT JOIN tb_assign_record r ON clue.id = r.assign_id<