• 模块管理常规功能自己定义系统的设计与实现(31--第三阶段 权限设计[1])


    系统的各种权限设计(1)



    视频解说在线观看:视频解说链接 http://i.youku.com/jfok1972


           本系统的如今已能够设计的权限一共同拥有四种类型。
            1、模块的操作权限:包含可浏览,增改删,附件的CRUD操作,审核。审批,附加功能的操作(这个前面忘了介绍了,在以下会介绍一下)。
            2、模块记录的可视权限:通俗的讲,就是哪些记录你能看,哪些记录你不能看。

            3、字段的仅仅读权限:对于具有可新增和可改动权限的人。进一步限制哪些字段是仅仅读的。
            4、字段的可视权限:哪些字段你不能看到。


            以上4种权限也都是在前台系统里直接配置就可以生效。

    以下来分别简介一下各个权限设计和实现过程。

    一、模块的操作权限:在前面的模块设计过程中已经有了此权限的介绍。一个模块增加系统后,须要在角色中设置此模块的权限。包含:可浏览、可新增、可改动、可删除、附加浏览、附件新增、附件改动、附件删除、可审核、可审批、可直接改动,另外还包含了每个附加功能的可运行权限。

    下面即为还有一系统的一个权限设置界面:



    可浏览假设没有选中。表示该操作员不能查看此模块。

    反应在前台就是在菜单项里没有该模块的菜单。

    可新增。可改动,可删除等表示为模块的toolbar中有对应的button。附件操作的权限也是每一个模块单独设置的,能够让不同人去分别管理不同模块的附件。以下来看看截图:


    以下来看看附加功能是怎样加进去的。在系统的管理模块中,有一个模块附加功能的管理模块。该模块定义了全部的系统中使用到的附加功能,包含系统模块使用到的。

    前面看见过一个就是“模块”管理中的“导入模块”这个button。就是一个附加功能。

    有的附加功能还能够创建一个窗体进行操作后再进行提交数据。就象前面介绍的对模块设置“附加字段”的功能。


           
    每一个模块功能的字段包含:
            


    对于上图中合同付款计划的8个附加功能,来看看放在什么地方:


    对于附加权限的运行,是一定要手工编码的了,通常是发送一个ajax请求到server端去处理,前台会由extjs mvc来捕获菜单点击事件来运行。比如对于“自己主动计划”这个附加功能。将会运行以下的js代码:
    	AgreementPlanAutoCreate : function(agreementId, grid) {
    		Ext.Ajax.request({
    					url : 'agreementplan/autocreate.do',
    					params : {
    						agreementId : agreementId
    					},
    					success : function(response) {
    						var message = Ext.decode(response.responseText);
    						if (message.success == false)
    							Jfok.system.warnInfo(message.msg);
    						else
    							Jfok.system.smileInfo('此合同的付款计划已自己主动生成!');
    						grid.store.reload();
    					},
    					failure : function(response) {
    						window.alert('又一次生成合同付款计划失败!');
    					}
    				})
    
    	}

    后台会由spring mvc来处理这个请求,完毕对应的操作,并返回操作结果。
    	/**
    	 * 自己主动建立合同付款计划
    	 * @param agreementId  当前选中合同的id号
    	 * @param request
    	 * @return
    	 */
    	@RequestMapping("/autocreate.do")
    	public @ResponseBody
    	ActionResult AutoCreate(String agreementId, HttpServletRequest request) {
    		ActionResult result = new ActionResult();
    		String r = agreementPlanService.AutoCreateAgreementPlan(Integer.parseInt(agreementId), request);
    		if (r == null)
    			;
    		else {
    			result.setSuccess(false);
    			result.setMsg(r);
    		}
    		return result;
    	}
    
    }

    对于模块审批权限的各级部门和审批人员的定义,样例模块中没实用到,不作介绍了。

    这样的权限的设置是全部系统都会有的。设计的方法也有多种,仅仅要能完毕功能就能够了。




  • 相关阅读:
    互联网人25岁毕业 拿一万块钱月薪 (转)
    在windows平台编译openAL Android 库
    lua简单包装
    libevent 简单学习
    cocos2dx中使用tolua++使lua调用c++函数
    《OpenGL超级宝典》编程环境配置
    快速排序、归并排序、堆排序三种算法性能比较
    二叉树的三种遍历的递归与非递归算法
    boost之bind
    boost之内存管理
  • 原文地址:https://www.cnblogs.com/yxwkf/p/5170161.html
Copyright © 2020-2023  润新知