日期:2014-05-16 浏览次数:20532 次
2014年年初的时候,接到运营部老大给的一个游戏数据库数据管理的系统,pm把rp图画好之后,就让我自己做了,所有的让我一个人用14个工作日昨开发完。
下面就把这个小系统的开发体会记录一下,免得以后忘记了。
一、总体规划
时间计划:
2014-2-15 ~ 2014-3-6,共14个工作日,开发时间为10个工作日,调试和修改时间为4个工作日。时间比较紧张,而且pm总是催来催去,时不时来一句:做到哪里了,搞得我心烦意乱。
功能模块:
主要:系统由前台和后台两个部分组成,前台是经分人员和产品研发人员使用的基本界面,后台是系统配置管理部分,主要有管理员和epr同事操作,用于对游戏业务和数据库/表进行相关授权。
这两个部分主要区分方式是权限控制,系统中有一张用户类型数据表,根据用户类型区分用户操作后台或前台的权限。而对于业务表的操作(增删查改),则必须由特定人员给某用户进行授权之后,该用户才可以操作。
基本组成:业务类、用户操作类(用户授权查询,用户授权,权限类型、用户列表、业务数据表配置与显示、业务数据库配置与显示),日志记录类(前台操作记录、后台操作记录)。
二、详细设计
日志记录类:
1、前台操作记录,即“经分人员和产品研发人员”和后台操作人员使用前台的时候,产生的日志记录。
2、后台操作记录,即系统管理员和epr同事进行后台操作产生的日志记录。
日志记录类使用两个相同数据结构的数据表,使用同一个方法进行入库:
/* *操作记录 *type:1后台操作记录,2:前台操作记录 * */ function opeartionLog($type,$opName,$opDescription,$sql){ $c=new CommonModel(); if($type==1){ $data=array( 'vAdmName'=>cookie('username')?cookie('username'):'test用户', 'vAdmOpName'=>$opName, 'vAdmOpDescription'=>$opDescription, 'sqlType'=>$sql, 'date'=>date("Y-m-d H:i:s") ); $c->c_insert('tbadmoplog',$data); }else if($type==2){ $data=array( 'vUserName'=>cookie('username')?cookie('username'):'test用户', 'vUserOpName'=>$opName, 'iUserOpDescription'=>$opDescription, 'sqlType'=>$sql, 'date'=>date("Y-m-d H:i:s") ); $c->c_insert('tbuseroplog',$data); } }
用户操作类:
用户操作类整TMD是个烦人的事情,因为游戏业务、数据库列表、数据表列表、我都需要通过API获取,而且返回的数据结构还经常会变化,也不告诉我(我们不在同一地点办公),后面还有更烦人的呢。
基本流程:
游戏业务授权--->业务数据库授权--->业务数据表授权(根据用户名进行授权,权限类型包括:查询、更新、删除、新增、上传、下载等)
游戏业务授权和业务数据库授权以及用户授权还都很简单,直接通过api拉取游戏业务或业务数据库列表,授权入库即可。
权限控制:
程序中的每一个操作模块在类中都是一个独立的方法,所以授权的时候,我直接在类初始化的时候,获取请求方法名称,然后strtolower()操作下,再根据配置中配置的信息,查询该用户是否有本方法的某些操作权限,有的话,进行后续操作,没有的话直接返回错误信息。其实之前也考虑过设计成类似linux的分组管理,对组进行授权,但后来发现不能满足我们的需求,也可能是我对linux的权限管理理解