上文讲了新设计的权限架构的细节,下面将与之相关的数据库四个表的表结构与字段定义列一下:
表一:rdApplications
1. 干嘛的
这个表存的是所有系统的字典。
2. 表结构
字段名 | 类型 | 含义 |
---|---|---|
tln_sid | int(11) | 此条记录的SID |
tlnAppName | varchar(50) | 系统应用的名称 |
tlnIsFrozen | tinyint(1) | 系统应用是否被冻结 |
tlnLastModifiedTime | timestamp | 记录最新更新时间 |
表二:rdPermissionDictionary
1. 干嘛的
这个表是用来存储所有权限信息的字典。
2. 表结构
字段名 | 类型 | 含义 |
---|---|---|
gpd_sid | int(11) | 此条记录的SID |
gpdAppId | int(11) | 系统字典表SID |
gpdPermissionCode | varchar(50) | 权限代码 |
gpdPermissionName | varchar(50) | 权限名称 |
gpdFrontEndRoute | varchar(100) | 对应的前端路由 |
gpdBackEndRoute | varchar(100) | 对应的后端路由 |
gpdIsFrozen | tinyint(1) | 权限是否被冻结 |
gpdDisplayOrderRank | int(11) | 展示时可能的显示顺序 |
gpdLastModifiedTime | timestamp | 当前记录最新更新时间 |
表三:rdRoleDictionary
1. 干嘛的
这个表是用来存储所有角色信息的字典。
2. 表结构
字段名 | 类型 | 含义 |
---|---|---|
ghr_sid | int(int) | 此条记录的SID |
ghrRoleName | varchar(100) | 角色名称 |
ghrHospitalAreaIdOfRole | int(11) | 角色所属院区 |
ghrIsFrozen | tinyint(1) | 角色是否被冻结 |
ghrLastModifiedTime | timestamp | 当前记录最新更新时间 |
表四:rdRolePermissionMap
1. 干嘛的
这个表是用来存储角色与其所包含权限的映射。
2. 表结构
字段名 | 类型 | 含义 |
---|---|---|
grp_sid | int(11) | 此条记录的SID |
grpRoleId | int(11) | 角色表的角色SID |
grpPermissionId | int(11) | 权限表的权限SID |
grpLastModifiedTime | timestamp | 当前记录最新更新时间 |
表五:rdUserPermissionDataScope
1. 干嘛的
这个表是用来存储用户甲在权限A下的数据域。
2. 表结构
字段名 | 类型 | 含义 |
---|---|---|
tnp_sid | int(11) | 此条记录的SID |
tnpUserId | int(11) | 用户表的用户SID |
tnpPermissionId | int(11) | 权限表的权限SID |
tnpDataScope | varchar(1000) | 数据域分级存储*,存储的时候就要求按照约定** 使用正则表达式去存储 |
grpLastModifiedTime | timestamp | 当前记录最新更新时间 |
* 数据分级与实体代码事先便定义好,分为[‘院区’, '大科室', '小科室', '医疗组(护理组)', '个人']五个等级,其中院区为最高等级,通俗意义上的医院在系统中仅作为象征存储相关信息,并不参与具体业务层面的逻辑。
** 具体编码格式约定如下:/AABBCCDDEE/ 代表AA院区BB大科室CC小科室DD医疗组下的EE这个用户,如果数据域中存储的是上述代码,那就拥有这个权限的EE用户的数据域;如果登录用户权限比较大,那他可能拥有整的DD医疗组的在这个权限下的数据域,此时数据域代码应该这么写 /^AABBCCDD[0-9]{2}/。注:初老师说全部用数字做 CODE,规则定为:院区3位、大科室2位、小科室2位、医疗组(护理组)2位、个人3位。