快捷搜索:

【自然框架】之通用权限(三):组织结构表组

继承,这是第三章了。拖得有点长,然则我也是一边写,一边在设法主见子,想怎么做才能让资本权限也能通用起来。看大年夜家的回覆也给了我一些提示,我也在改动我的规划。原本盘算用来办理一小我虽然在营业一部,然则却可以看营业一部、营业二部的客户信息的环境,然则仔细想了一下,这么做也不可。不过还好,我又找到了另一个措施来办理,而且可以让资本权限加倍通用。不过这个具体的措施要放鄙人一章的角色表组里面来阐清楚明了。(这是写这篇之前的设法主见,写完之后设法主见又变了。)

通用权限想要写的文章目录:(这是第三章)

1、 简介、数据库的总体布局

2、 先容职员表组

3、 先容组织布局表组

4、 先容角色表组

5、 先容“项目自我描述表组”

6、 权限到节点

7、 权限到按钮

8、 权限到列表(表单、查询)

9、 权限的验证

10、 资本方面的权限

11、 角色治理的法度榜样(给客户用的)

12、 权限下放

13、 个性化设置

组织机构表组

这个简单一些,今朝只有两个表。

Dept_Department,这个是n级分类的设置,对以小公司来说,可以放营业部、客户服等部门;对付集团来说可以先放分公司(比如子公司1、子公司2),然后再鄙人一级里面放营业部、客户服等。而对付更大年夜的集团的话,可以先放置“西北区”、“华北区”、“华东区”这样的大年夜区,然后再鄙人一级放分公司,再鄙人下一级放营业部、客户服。便是说一个公司不管若何去划分“部门”,总之都往这个内外貌放。

字段名

中文名

字段类型

字段大年夜小

默认值

是否为空

阐明

DepartmentID

组织机构

int

4

1

0

主键

机构名称

机构名称

nvarchar

50

_

0

可所以部门,也可所以分公司、地区

机构简称

机构简称

nvarchar

50

_

0

机构简称

布局描述

布局描述

nvarchar

50

_

0

布局描述

机构类型

机构类型

nvarchar

50

_

0

机构类型

办公室电话

办公室电话

nvarchar

50

_

0

办公室电话

传真

传真

nvarchar

50

_

0

传真

邮编

邮编

varchar

6

_

0

邮编

地址

地址

nvarchar

50

_

0

地址

备注

备注

nvarchar

50

_

0

备注

子机构数量

子机构数量

int

4

0

0

不包括子子机构

本机构员工数

本机构员工数

int

4

0

0

本机构(不包括子机构)的员工数

本机构整个员工数

本机构整个员工数

int

4

0

0

本机构和子机、子子机构的员工数量

ParentID

父节点ID

int

4

1

0

父节点ID

ParentIDPath

父节点ID的路径

nvarchar

30

0,

0

父节点ID的路径

DeptLevel

机构层数

int

4

1

0

第几级的机构

Sort

序号

int

4

1

0

总排序

Dept_Department_Person,表示一个机构里面有哪些职员,机构和职员是多对多的关系。

字段名

中文名

字段类型

字段大年夜小

默认值

是否为空

阐明

DeptPersonID

序号

int

4

1

0

主键

DepartmentID

组织机构

int

4

1

0

外键

PersonID

职员ID

int

4

1

0

外键

问:为什么要在权限里面加上组织机构?他和权限有什么关系呢?

答:准确的说,组织机构和操作权限基础上没有什么关系,然则却和资本权限有很大年夜的关系。

我想用我曩昔做过的一个CMS项目来阐明,我先简要先容一下客户的环境。出于商业秘密缘故原由,我说的会对照“隐隐”,然则并不会影响阐明组织机构和资本权限的关系。

客户是一个集团公司,集团里面有四个贩卖子公司,和一个售后办事公司。贩卖子公司都是自力运营,各卖各的产品;售后办事公司内部分为四个办事部,分手对应四个贩卖公司。(如下图)

Dept_Department 里的信息如下:

部门里的职员信息:

  图片看不清楚?请点击这里查看原图(大年夜图)。

便是说一个客户购买了贩卖一公司的产品后,办事一部就要对这个客户进行售后办事。这样就呈现了,贩卖一公司填写客户信息的时刻,很自然的这个客户就成为了贩卖一公司的客户(客户的部门ID记录的是贩卖一公司的部门ID“3”)。然后办事一部的员工要对贩卖一公司的客户进行售后办事,那办事一部的员工就要可以看到贩卖一公司的客户(不能看到其他贩卖公司的客户信息)。

这就呈现了一个问题,客户信息里面并没有办事一部的部门ID,那我们怎么区分呢?把办事一部的员工都放在贩卖一公司吗?这不就乱了吗?我当时是做了一个部门ID的对应关系,虽然可以办理,然则很显然不敷通用。

这还没完,办事部又出来了一个问题,办事一部的经理可以看到办事一部的客户外,还可以看到办事二部的客户信息,而办事三部和办事四部的经理都只能看到自己的办事部的客户信息。这个倒是好办,可以把办事一部的经理放在办事一部和办事二部里面。

着末还有一个普遍的问题,那便是贩卖一公司的营业员只能看到自己添加的客户信息,贩卖公司的经理只能看到贩卖一公司的客户信息。

三个问题,虽然可以用许多的要领措施来办理,然则若何来统一呢,若何不用写逝世在代码里面呢?

问题的根滥觞基本因就在于一小我所在的部门,与可以看到的部门不同等!虽然对付第二个问题可以采纳强制同等的措施,然则对付第一个问题就不可了。

我前几天的设法主见是这样的,在Person_User_Info内外貌添加一个DepartmentIDs字段,这个字段来记录职员可以查看的部门ID,比如办事一部的售后办事工程师的DepartmentIDs 字段的内容便是:“3,8”。这样我们便是用了两个“地方”来寄放职员和部门的对应关系。

然则仔细想一想,这个措施也不敷完美,照样有一个问题和一个隐患。

问题:我必要知道造访页面的人是营业员、办事工程师照样经理。假如不能确认的话,就无法进行资本的过滤。

隐患:假如发生了冲突了怎么办。比如,假设办事工程师可以看到营业员改动客户信息的页面,那么办事工程师不就会由于DepartmentIDs的缘故原由而可以改动客户信息了吗?虽然我可以不给办事工程司分配营业员的改动客户信息的页面的权限,然则我总感觉,其他的地方有可能会呈现冲突的环境。

以是我就想放弃这个设法主见,改用角色资本的要领,这个鄙人一章的角色里面在阐明。

在写这一篇之前照样想放弃这个规划的,然则一边写一边想,着末照样保留这个措施吧,只要能够和角色,资本角色共同好,这个措施照样可行的。

系列文章:

【自然框架】之表单控件(一)实体类(Class)VS 字典(Dictionary)

【自然框架】之通用权限(一):简介、数据布局

【自然框架】之通用权限(二):职员表组

您可能还会对下面的文章感兴趣: