常规功能和模块自定义系统 (cfcmms)—037模块记录(数据)的权限设计(2)

037模块记录(数据)的权限设计(2)


  前面给一个模拟的销售订单系统加了一些权限的设置,为了完成可以实现自定义权限,需要设计一个方案把各种权限保存下来。经过分析发现一个权限需要有四个要素:
  1、需要有一个基准模块,也就是数据记录权限最终影响到的模块。在上面的例子中就是“订单”模块;
  2、在基准模块的父模块中需要一个加上限定条件的模块。如上例中的“客户单位”,“客户单位省份”;
  3、需要指定一个从基准模到到限定条件模块的路径。如上例中的分管着三个省的客户专员,对于订单的限定条件的模块路径为:客户单位--市--省。
  4、加在限定模块上的限定的条件值。一般情况下为限定模块的主键,也可以自定义表达式。

  为什么要有基准模块呢和限定路径呢?对于一个加在省份模块上的条件,由于在上面的模块图中出现了4次省份模块,不加路径限定的话,就不知道要加在哪个省份上面。在生成查询语句的时候可能就会把4个省份全部加上限定条件。这样就会得到下面的一个查询结果:这三个省的客户的商品仓库也是这三个省的,始发地和目的地也是这三个省的所有订单。
  对于订单的4个省份的父模块其路径分别为:
1、始发地市--省份;
  2、商品仓库--市--省份;
  3、客户单位--市--省份;
  4、目的地市--省;
  为了区分是加在哪个省上的限定条件,需要指定限定条件模块的路径来确定最终条件加在哪个地方。


  再来深入的研究一下:客户单位--市--省份的这个加在订单上的权限。这个权限只是加在了订单上,并没有加在客户单位上。订单查询的结果是只显示了这三个省的客户单位的,但是在查询客户单位的时候会显示所有的客户单位,如果也只要显示这三个省的客户单位的话,那么这个权限的设置就要修改一下。
  • 将客户单位作为基准模块,将省份作为附加权限的字段,模块的路径为:市--省份。这样就限定了在查询客户单位的时候就只能显示这三个省的客户单位了。
  • 由于权限具有延展性,作为“客户单位”子模块的“订单”模块会加上订单模块的权限。
  • 订单明细模块同样也具有所有父模块的权限。
  对于金牌客户专员而言就有三种加权限的方法了。
  1、订单为基准模块,权限模块路径为:客户单位--等级;这个是上面例子里的。
  2、客户单位为基准模块,权限模块路径为:等级;
  3、等级为基准模块,权限模块也为等级,权限模块路径为空。也就是直接加在“等级”模块上。
  上述三种附加权限的方法的不同点为:第1种可以看到所有的等级和所有的客户单位,在看订单的时候只能看到金牌单位的;第2种可以看到所有的等级,客户单位和订单只能看到金牌客户的;第3种是这三个模块都只能看到金牌客户的记录。

  以上即为本系统中自定义权限设计方面的一些主要内容。有了模块关联关系和上述的权限设置的4个要求,就可以在生成查询的sql语句的时候来在相应的模块中加入设置的权限。

  对于一个订单来说有4个不同路径的父模块省份,同样对于省份来说,也有4个不同路径的子模块订单。


  同样的对于上图来说要按照省份来统计订单的金额,必须指定一个由省份到订单的路径。这个路径正好和上面的相反。下面是这4种订单相对于省份的路径。
  1、市--商品仓库--订单
  2、市--客户单位--订单
  3、目的地市--订单
  4、始发地市--订单
  在分类汇总和统计省的订单数据的时候必须指定一个路径,才能得到你想要的数据。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值