一、主要应用要求
记录lis配置模块的历史记录,要求能够准确的记录配置修改前修改后的历史数据,及操作行为。
- 方案:
Spring 的AOP功能
查询的相关链接:
https://blog.csdn.net/mlc1218559742/article/details/51778224
优点:比较方便,通过自定义注解的方法,把想要记录的内容放在注解中,通过切入点来获取注解参数,就能获取自己想要的数据,记录数据库中。(可以记录,操作人的信息,操作接口的方法,入参,出参等等)
缺点:不太好实现多表操作
- 日志记录表的设计:
3.1.数据库设计
主日志表SYS_SYSTEMlOG:日志表
NO. | 字段名 | 含义 | 类型 | 备注说明 |
表名:SYS_SYSTEMlOG 日志表 | ||||
1 | LOGID | 主键LOGID | string |
|
2 | TABLENAME | 操作标明 | string |
|
3 | OPTYPE | 操作类型 | string |
|
4 | USERID | 操作人id | string |
|
5 | SUBSYSCODE | 子系统代码 | string |
|
6 | HOSPITALCODE | 机构代码 | string |
|
7 | HOSPITALNAME | 机构名称 | string |
|
8 | LOGCODE | 登录账号 001 | string |
|
9 | USERCODE | 工号 | string |
|
10 | USERNAME | 姓名 | string |
|
11 | DEPTCODE | 部门代码 | string |
|
12 | DEPTNAME | 部门名称 | string |
|
13 | ip | 操作电脑的ip | string |
|
14 | url | 操作的接口地址 | string |
|
15 | Httptype | 请求类型 | string | Post/get |
16 | actionmethod | 接口方法 | string |
|
17 | params | 接口入参数 | string |
|
18 | actiondate | 开始时间 | string |
|
19 | returndate | 操作接口结束时间 | string |
|
20 | type |
| string |
|
21 | returndata | 返回的出参 | string |
|
22 | modules | 模块 | string |
|
23 | description | 描述 | string |
|
24 | exceptioncode | 异常code | string |
|
25 | exceptiondetail | 异常信息 | string |
|
子日志表SYS_SYSTEMlOG_DETAIL:操作日志详情表
NO. | 字段名 | 含义 | 类型 | 备注说明 |
表名:SYS_SYSTEMlOG_DETAIL 操作日志详情表 | ||||
1 | ID | 主键id | string |
|
2 | LOGID | 操作日志id | string | SYS_SYSTEMlOG的主键 |
3 | FIELDNAME | 字段名称 | string |
|
4 | FIELDDETAIL | 字段描述 | string |
|
5 | OLDVALUE | 当前字段旧值 | string |
|
6 | NEWVALUE | 当前字段新值 | string |
|
注:主表和子表的关系是一对多的关系;通过LOGID字段连接。
- 具体实现:
4.1通过自定义注解,注解到需要aop切入的方法上
定义注解:OperationLog,并且定义六个属性
String id();//数据表主键id
String table();//数据表
String[] cloum() default {};//需要记录的字段
OperationType type();//操作类型:ADD 添加,UPDATE修改,DELETE删除
String descrption() default "" ;//描述
String modules() default "";//操作模块
4.2定义切面类,获取切面参数,保存数据库具体代码如下:
4.3 日志切入【添加注解标志即可】
删除:
新增:
修改:
4.4 数据库记录数据的效果:
本次在外地出差,无法连接数据库,回头补上数据库的截图。有问题的可以联系我:QQ875491089