基于角色显示不同数据范围技术方案

业务背景

旅行社管理员可以管理:

  • 自己创建的路线
  • 用户基于创建人所创建的路线基础上,所生成的定制路线

需求分析

  • 超级管理员:查看所有数据
  • 旅行社管理员:查看自己数据+所有普通用户创建的数据
  • 普通用户:查看自己创建的数据

方案设计

前提:每个数据表都存着 创建人I

注解加拦截器,注解加在相关方法中,执行sql前,根据角色分别执行不同逻辑:

  1. 超级管理员:不增加创建人ID过滤条件
  2. 旅行社管理员:增加创建人ID过滤条件(当前用户ID+所有普通用户)
  3. 普通用户:增加创建人ID过滤条件(当前用户ID)

方案分析

优点:

  1. 可复用。后续如果有相同逻辑,加注解即可实现。

缺点:

  1. 用户绑定多个角色时,处理逻辑存在互相冲突可能性。

可能变动的点

1. 旅行社管理员可查看的数据范围改为:同组织(或以下用户)的用户创建的数据+普通用户数据。

调整逻辑:数据过滤条件改为根据 当前用户所在组织及以下用户ID +普通用户ID过滤。