<html>
权限设计(2)
二、模块记录的可视权限。通俗的讲哪些记录你能看,哪些记录你不能看。说起来简单,做起来不简单。
先从一个简单的需求说起。对于前面搭建的销售系统假设由一个内勤来处理全部的合同,那么就没有权限设计的问题,把内勤的部门加在“销售部”就能够看到销售一、二、三部的全部合同。可是假设每一个销售部有单独的内勤来处理自己部门的销售订单,而且互不干扰,就要设计记录的可视权限了。
如今系统里内置了部门的权限。
样例中的部门结构例如以下:
部门编码 | 部门名称 | 操作全部记录 | 操作本级 | 其它 |
00 | 公司 | |||
0001 | 办公室 | true | ||
0002 | 財务部 | true | ||
0010 | 销售部 | |||
001001 | 销售一部 | true | ||
001002 | 销售二部 | |||
001003 | 销售三部 |
在上面的结构中,操作员依据其所属部门来设置其记录可视权限。00部门下的人能够查看全部数据,0001,0002,因为设置了 操作全部记录 的选项。这二个部门的人也能够查看全部记录。0010能够查看001001,001002,001003的全部数据,而001002,001003仅仅能查看自己部门以下的数据。001001设置了一个操作本级的值,表示他能够查看到0010的权限。也就和本级平级的数据都能够看到。
相应权限设置,事实上就是将条件加进sql的过程。对于业务员。我们来看一下查找销售二部的业务员的sql
select _t6020.tf_salesmanId as tf_salesmanId , _t6020.tf_name as tf_name , _t6020.tf_sex as tf_sex , _t6020.tf_birthday as tf_birthday , _t6020.tf_age as tf_age , _t6020.tf_telnumber as tf_telnumber , _t6020.tf_phonenumber as tf_phonenumber , _t6020.tf_eMail as tf_eMail , _t6020.tf_remark as tf_remark , _t9011.tf_departmentId as _t9011___tf_departmentId , _t9011.tf_name as _t9011___tf_name from Salesman _t6020 left outer join _Department _t9011 on _t9011.tf_departmentId = _t6020.tf_departmentId where ( ( _t9011.tf_departmentId like '001020%' ) )查找业务二部的全部订单的sql
select _t6040.tf_ordersId as tf_ordersId , _t6040.tf_ordersNumber as tf_ordersNumber , _t6040.tf_date as tf_date , _t6040.tf_finished as tf_finished , _t6040.tf_remark as tf_remark , _t6010.tf_customerId as _t6010___tf_customerId , _t6010.tf_name as _t6010___tf_name , _t6020.tf_salesmanId as _t6020___tf_salesmanId , _t6020.tf_name as _t6020___tf_name , _t9011.tf_departmentId as _t9011___tf_departmentId , _t9011.tf_name as _t9011___tf_name , from Orders _t6040 //订单 left outer join Salesman _t6020 //业务员 on _t6020.tf_salesmanId = _t6040.tf_salesmanId left outer join _Department _t9011 //部门 on _t9011.tf_departmentId = _t6020.tf_departmentId where _t9011.tf_departmentId like '001020%'
能够看到全部部门的子模块,无论离部门有多远,在查找数据的时候,都必须一级级的关联,终于关联到部门。并增加部门的限定条件值。对于系统结构图,能够看到的是部门的子模块有:业务员、订单、订单明细、订单收款。
不止是上面直接取得各子模块数据的时候要增加部门的限定值,在这些模块的字段作为聚合字段计数或求和时也要限定部门的值,全部的部门及其子模块作为导航值统计记录数的时候也都要增加部门的限定值。总之中的一个句话。销售二部的人看到的和统计到的都是他部门的数据。而无论这个模块和部门的距离有多少级。假设你的系统设计到了层次10级以上。可能会考虑效率问题,但这个应该不是你应该考虑的,这是oracle。sybase,microsoft公司应该考虑的了。
对于有分层结构的模块。其where子句是象上面的这样增加的where _t9011.tf_departmentId like '001020%'
这个还得优化一下,由于是最末一级了,能够使用_t9011.tf_departmentId = '001020'
而假设是 0010权限,才用_t9011.tf_departmentId like '0010%'
这是单个一个部门的权限,当然也能够设计成这种权限
_t9011.tf_departmentId like '001020%' or_t9011.tf_departmentId like '001030%'这个操作员就能够查看销售二部和销售三部的全部数据。
以上就是单个模块设计记录权限的方法。如今引申一下,能够对不论什么一个模块的记录加上这个限定的权限,比方说有个统计专员,专门统计“金牌客户”的订单。我们就能够在 “客户等级”这个模块上加一个权限。然后将此权限赋予此统计专员。其就仅仅能看到金牌客户的全部数据,而其它数据就看不到了。
假设有一个行业订单分析师,那么就在行业模块上加上权限,能够选择一个行业。或几个行业,使此行业分析师仅仅能看到这些行业以下的全部客户和全部订单。
以上这些权限是能够叠加的:比方说销售二部有一个金牌分析师。那么在查客户单位的时候是限定金牌单位,查业务员的时候限定销售二部,在查销售订单的时候要同一时候惬意是销售二部的金牌客户的订单。
这些权限的设计也都是所有在前台设计好后马上生效的。
继续引申,比方有一个大订单分析师,仅仅要看到10万元以上的订单,那么也应该能够设计一个权限,放置于订单金额总金额之上。这个功能如今没做的。仅仅是我刚想出来的一个点子而己。要做进去的话。预计1,2天时间就能够了。
以上即为模块记录的可视权限的简单设计介绍。假设还有更好的办法。请跟贴指点或交流 jfok1972@qq.com。
版权声明:本文为博主原创文章。未经博主同意不得转载。
举报
- 本文已收录于下面专栏:
- 模块功能自己定义系统的设计
相关文章推荐
-
自己定义可复用统计SDK设计
之前换工作,有家公司福利待遇各方面都特别惬意。十分想去。可是面试碰到个问题,让我尴尬了,尽管本人到眼下为止从事iOS开发三年多,但大多独立开发,这问题还真没深入去考虑过。以下我详细讲讲遇到的问题。 ...
- qq_35612929
- 2017-03-13 17:50
- 228
-
模块管理常规功能自己定义系统的设计与实现(25--多个模块之间的关联[1])
多个模块之间的关联(1) 如今開始增加第三个模块“客户单位”,顺便先把“客户等级”和“行业”也加进去。增加进去了以后将会完毕下图的五个模块的操作。在增加的模块中,“所属行业”的...
- jfok
- 2014-05-05 11:32
- 2050
-
常规功能和模块自己定义系统 (cfcmms)—040模块记录(数据)的权限设计(5)聚合操作
040模块记录(数据)的权限设计(5)聚合操作 前面几节设计的都是把权限怎样加在基准模块之上的。如今讨论一下聚合字段的权限。某个基准模块须要附加子模块的聚合字段也是比較常见的需求,比方“订单”...
- jfok
- 2016-04-09 11:01
- 740
-
常规功能和模块自己定义系统—058商业智能(BI)功能的初步1
常规功能和模块自己定义系统—058 商业智能(BI)的初步 经过一段时间的设计和开发,自己定义系统中一款相似于BI的汇总分析功能开发出了雏形。本功能主要适用于各种业务系统的数据统计和分析。主...
- jfok
- 2017-03-16 09:01
- 540
-
App打造自己定义的统计SDK, 是时候和友盟说分手了
转: App打造自己定义的统计SDK, 是时候和友盟说分手了 前言 谈到移动APP开发的优化方案。开发人员第一时间会想到关于GPU渲染和CPU优化问题。而这两慷慨案确实是优化a...- wxx614817
- 2016-09-01 10:42
- 863
-
常规功能和模块自己定义系统 (cfcmms)—039模块记录(数据)的权限设计(4)
039模块记录(数据)的权限设计(4)- jfok
- 2016-04-05 09:08
- 663
-
模块管理常规功能自己定义系统的设计与实现(35--终级阶段 综合查询[2])
综合查询(2)--查询条件的设置 上一节介绍了怎样选择查询字段。这一节来看看怎样设置查询条件。对于这个销售管理系统中的“订单”模块而言。能够设置的查询条件能够想到的有:须要按业务员查询...- jfok
- 2014-05-09 09:09
- 2240
-
模块管理常规功能自己定义系统的设计与实现(35--终级阶段 综合查询[2])
综合查询(2)--查询条件的设置 上一节介绍了怎样选择查询字段,这一节来看看怎样设置查询条件。对于这个销售管理系统中的“订单”模块而言,能够设置的查询条件能够想到的有:须要按业务员查询...
- jfok
- 2014-05-09 09:09
- 2240
-
Web 应用程序安全设计指南
本页内容 <a href="http://cache.baidu.com/c?word=%C8%C6%B9%FD%2Cjavascript%2C%BC%EC%B2%E9&url=http%3A//www%2Emicrosoft%2Ecom/china/technet/- javahigh1
- 2007-06-14 16:21
- 272
-
Web 应用程序安全设计指南
本页内容 <a target="_blank" href="http://cache.baidu.com/c?word=%C8%C6%B9%FD%2- aol_aog
- 2008-08-05 12:17
- 27
收藏助手
不良信息举报
0条评论