📄 common-audit 字段审计使用
内部资料,请刷新扫码登录
pigcloud
在后台开发中,一般的业务表都会包含一些审计记录的字段,例如创建人、创建时间、修改人和修改时间等。这些字段只是记录当时的操作人和操作时间,没有特别的逻辑。
对于个别敏感字段,需要记录其变更前后的数据值。比如,如果修改前是 A,修改后是 B,则需要将这些操作记录到数据库中,以便日后进行审计。
# ① 添加依赖
<!-- 字段审计 -->
<dependency>
<groupId>com.pig4cloud</groupId>
<artifactId>pigx-common-audit</artifactId>
</dependency>
# ② 实体字段标记审计
如下标记用户的手机号字段,记录用户更新前后手机号变化
public class SysUser implements Serializable {
@DiffInclude
@PropertyName("手机号")
private String phone;
}
# ③ 业务层添加审计
public Boolean updateUser(UserDTO userDto) {
....
return Boolean.TRUE;
}
在下面这个业务层中,userDto 是前端更新后的数据。如果要进行更改,就需要获取原有数据。
- 方法一(推荐):使用 Spring SpEL 表达式自动查询数据库中当前用户的原始值。
@Audit(name = "用户更新", spel = "@sysUserMapper.selectById(#userDto.userId)")
表达式解析:@sysUserMapper 获取名称为 sysUserMapper 的 bean,调用 selectById 方法,方法参数 #userDto.userId
来自于当前方法(service.updateUser)的 ID 字段。
- 方法二(写死): 直接将审计字段的原数据值写死在 oldVal 中。
@Audit(name = "用户更新", oldVal = "17034642449")
# Audit 注解属性说明
属性 | 解释 |
---|---|
name | 审计项名称 |
value / spel | 表达式语言,用于生成审计信息 |
oldVal | 修改前的值 (覆盖 spel 的结果) |
newVal | 修改后的值 (覆盖 service 方法的执行结果) |