1、针对请求获取url
判断数据请求方式,如果为Ajax请求则通过ajax返回json数据,否则显示html页面
2、根据url判断模块、模型、控制器、方法以及关键key等
3、数据包data包括data_list/data_info/data_tree/data_custom、field_defined[field_defined=1]、page_info[page_info=1]、search_defined[search_defined=1]、sort_defined[sort_defined=1]
data数据包中定义如下:
(1) data中必包含data_list列表数据、data_info数组数据、data_tree树形数据、data_status状态数据、data_custom自定义数据其中之一
(2) field_defined表示数据展示的表单定义,当请求参数中包括field_defined=1时返回;
(3) page_info表示数据展示的表单定义,当请求参数中包括page_info=1时返回;
(4) search_defined表示数据展示的表单定义,当请求参数中包括search_defined=1时返回;
(5) sort_defined表示数据展示的表单定义,当请求参数中包括sort_defined=1时返回;
(6) data中都默认包含返回状态errcode=0,当errcode的值不为0时,额外增加errmsg内容。
4、公共方法
参考《常用公共方法定义》一文。
5、通用方法
在前置base控制器中编写get_list、add、edit、delete四个方法的常规操作。所有访问优先使用公共方法定义中的方法进行响应,特殊方法自行编写代码实现。
6、访问流程
前置判断url所属功能id[功能验证],查询不到则返回异常[Ajax通过json返回,非Ajax通过页面返回];查询到以后设置全局变量,根据功能id判断权限验证要求,不需要的直接进行业务操作,需要的开始判断用户/管理员登录状态[登录验证],成功登录的进行角色判断[角色验证],根据所属角色检索是否拥有该功能的访问权限[权限验证],拥有则进入业务操作;
(1) 功能验证
(2) 登录验证
(3) 角色验证
(4) 权限验证
以下为业务操作
1)全局信息定义
AccessInfo[必须]、LoginInfo{AdminInfo、RoleInfo、AccessList}[登录完成]、AccessParamList[当方法名为get_list、add、edit]
2)调试操作
(1)文件智能生成,根据请求模型判断模型是否存在,不存在时自动创建到common模块(若功能信息中不包含model_id或者model_name则不需要创建模型)
(2)功能参数自动生成,当访问的功能含有数据模型,但是没有参数定义[access_param]则自动跳转到自动生成功能界面,该界面包含自动生成和返回按钮,自动生成完成以后同样返回至原访问路径。
业务操作方法先判断是否为空操作
(1) 为空操作,判断是否为Ajax,如果不是直接返回页面[默认或指定模块库/default/方法名],如果是则根据方法名获取数据,根据可选定义[field_defined、page_info、search_defined、sort_defined]获取数据,完成后打包至公共方法[srt/ert]返回json。
(2) 非空操作,判断是否为Ajax,如果不是直接返回页面[默认或指定模块库/控制器名/方法名],如果是则根据方法名获取数据,根据可选定义[field_defined、page_info、search_defined、sort_defined]获取数据,完成后打包至公共方法[srt/ert]返回json。
备注:
1、新增data_model表、定义model_id,access表中新增model_id字段,access_param表中新增access_id、model_id字段