操作日志方案.doc_第1页
操作日志方案.doc_第2页
操作日志方案.doc_第3页
操作日志方案.doc_第4页
操作日志方案.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

操作日志记录设计一、显示层:1、功能描述:在页面加载完成后,利用JS记录需要记录的值到对应的隐藏域中。当页面操作成功后利用JS对表单数据进行比对,记录改动过的内容并保存到隐藏域中,供后台调用。2、日志数据:提交日志的数据格式为JSON格式,其中 operType代表操作类型:add代表添加,update代表更新,del代表删除,primary_key代表数据主键;log代表日志信息;2.1、JSON格式定义 A、方法一:.添加数据时,添加多表,多记录时的格式operType:add,businessName:value,log:primarykey_propertynameTABLENAME:value,primarykey_propertynameTABLENAME:value2,.,.(注:TABLENAME要大写,primarykey_propertyname小写(与数据库中的字段对应以下类同)方法二:如果进行日志时,需后台向前台添加的值太多,可以直接在后台按照如下方式添加添加businessName:模块名称,url:添加操作的路径 addLogData:以listMap的形式存放主键值调用方法:logOperationService.resolveAddOper(url,businessName,addLogData);Autowiredprivate LogOperationService logOperationService;public List getSchedule(String data)String businessName=编更管理;String url=makemore/addSchedule;String insertSche=data.split(#);ListMap addLogData=newArrayListMap();for(int i=0;iinsertSche.length;i+)Map map=new HashMap();String insert=insertSchei.split(,);if(!.equals(insert0)&!.equals(insert1)&!.equals(insert2)map.put(schedule_codeDP10_SCHEDULE, insert0);map.put(bussiness_dayDP10_SCHEDULE, insert2);map.put(inner_codeDP10_SCHEDULE, insert1);addLogData.add(map);logOperationService.resolveAddOper(url,businessName,addLogData);2. B、更新数据进,更新多表,多记录时的格式operType:update,businessName:value,log:property_nameTABLENAME:old,new,.C、删除数据时,多表,多记录时operType:add,businessName:value,log:primarykey_propertynameTABLENAME:value,primarykey_propertyname2TABLENAME:value2,.,. 3. 、javascript方法定义(文件名:logOperation.js) 3.1 方法名称:setOldPropertyGroup(,)功能描述:此方法用于数据更新时,把前端的初始值传递进来。数据格式为:“”代表每条件记录,然后把他们放在数组“”中。 3.2方法名称:compareInputVal() 功能描述:此方法用于数据更新时,用户提交数据时应调用的方法。用于与初始数据进行比对。分析出用户变更的内容。 返回值:JSON格式字符串 3.3 方法名称:setNewPropertyGroup(,) 功能描述:更新时,在提交之前调用把改动过后的数据传递进来,数据格式为:“”代表每条件记录,然后把他们放在数组“”中更新信息写在,.实例:初始进存入“username”:”zg”,”age”:”20”primaryKey:property_nameTABLENAME:”西九龙”,property_nameTABLENAME:”20”,,其中”primaryKey”放的是主键键值对更新完成后存入“username”:”ww”,”age”:”25”,primaryKey:property_nameTABLENAME:”西九龙”,property_nameTABLENAME:”20”, 其中”primaryKey”放的是更新所在行主键键值对3.4方法名称:getPrimaryKeyValue(primaryKeyJSON) 功能描述:此方法用于添加时调于,主要用于设置添加的记录的主键值参数:JSON格式的数据。格式为由多个JSON对象组成的数组,每个JSON 对象为一条记录:column1TABLENAME1:value,column2TABLENAME2:value,.,.格式中的“column” 代表数据表的主键的属性名称。“value”代表主皱起主键值返回值:JSON字符串3.5 方法调用实例:log=new Log(“业务名称”);log是唯一标示在构建对象时把业务名称当作参数传入。然后根据需要调用下列方法3.5.1添加数据时的单记录添加方法调用:提交数据时调用getAddPrimaryKeyValue(“primaryKeyTABLENAME”:”1”,”primaryKeyTABLENAME”:”2”); 最后把返回值赋值给addLogData提交3.5.21.添加数据时的多表多记录时的调用:提交数据时调用getAddPrimaryKeyValue(“tb1_idTABLENAME”:”1”,”tb2_idTABLENAME”:”1”,“idTABLENAME2”:”2”,”tb2_idTABLENAME2”:”2”,.);最后把返回值赋值给addLogData提交3.5.3 删除时调用请参照上述的添加调用。 只是方法调用getDelPrimaryKeyValue(“idTABLENAME”:”1”,”id2TABLENAME”:”2”);3.5.4更新数据时,其中每个“”代表一条记录加载数据完成后调用(更新前)setOldPropertyGroup(,);然后提交数据时调用(更新后)setNewPropertyGroup(,)compareInputVal();最后把返回值赋值给logData提交4:将操作记录传递到后台的实例必须在操作成功后,进行日志操作如:if(msg= =”操作成功”)$.ajax(url:projectName +/sys/operatorLog,Data:urlData:操作时的路径(更新,增加,删除的路径),logData:操作记录(更新:logData,新增和删除:addLogData)注:url为固定的路径二、服务层1、功能描述:解析提交的JSON日志数据,把其中的内容拆分进行存储。2、方法定义public void saveLog(String url, String logData, String officeNo,String innerCode, String operatorNo); 存储日志记录;private Map resolveUpdateOper(String url, JSONObject jsonObj) 解析更新时的日志数据,返回旧值与新值private Map resolveAddOrDelOper(String url,JSONObject jsonObj)解析添加或删除时的日志数据,返回添加值,存储在key值为“NEW_VALUE”中4、 过程描述:把用户提交的数据,通过sping的拦截器进行URL拦截,之后通过URL与之关连的table找到提交的页面属性与字段的对应关系,通过合理的解析存储在表的相应字段中。三、数据层1.功能描述:通过服务层的处理把结果存储在日志记录表中。列名添加更新删除OPERATE_ITEMcolnameTABLENAME,colname2TABLENAME,.,colnameTABLENAME,colname2TABLENAME,.,colnameTABLENAME,colname2TABLENAME,.,OLD_VALUE,.NEW_VALUE,.,.,.OPERATE_TYPE添加更新删除LOG_CONTEXT提交的日志内容提交的日志内容提交的日志内容OPERATE_OBJECTtableName1,tableName2.tableName1,tableName2.tableName1,tableName2.OPERATE_COLUMN_TEXT,.,.,.日志添加方法2日志添加方法2同方法1一样,在1基础上进行了完善,除去了在前台js,jsp中添加代码这个繁琐的过程,其代码如下图图中我们可以看到,这是一个添加任务操作,task这个实体有20多个参数,我们要添加日志只需要编写以下行代码即可完成添加操作/主键idSet primaryKey = new HashSet();primaryKey.add(taskId);/比较不同ObjectCompareResult compResult = operationLogService.Compare(null, task,true, primaryKey);第一个参数为原来的实体,由于是添加操作,写成null,如果是更新操作需要通过主键(taskId)将原来的数据从库中查出来,第二个参数为需要添加/更新的实体,即数据发生了变化的实体(某些参数发生了变化)第三个参数为是否转换名字,这里默认要填true如果你的实体是model,即由mybatis3插件生成的实体(model,mapper,xml),这就要写成true如果你的实体是dto(例:officeDto,common下dto包中),这就要写成false,详询宋健 第4个参数为主键/放入结果集,并记录Map CompareResultMap = new HashMap();CompareResultMap.put(DC10_TIMERTASK, compResult);operationLogSe

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论