一、定义参数
因为权限操作类型比较多,可以设置根据操作类型来显示记录
public class SearchLogParam {
//根据类型来搜索:用户,部门,权限...
private Integer type; // LogType
//更新前片段
private String beforeSeg;
//更新后片段
private String afterSeg;
//操作者
private String operator;
//fromTime和toTime来限制时间段
private String fromTime;//yyyy-MM-dd HH:mm:ss
private String toTime;
}
二、解决定义的参数与数据库定义不一致:
SearchLogParam需要通过转换后变成查询数据库的参数
//SearchLogParam需要通过转换后变成查询数据库的参数
public class SearchLogDto {
private Integer type; // LogType
private String beforeSeg;
private String afterSeg;
private String operator;
private Date fromTime;//yyyy-MM-dd HH:mm:ss
private Date toTime; //yyyy-MM-dd HH:mm:ss
}
三、Service 层
1、确定哪些操作需要记录:Type、 TargetId 、OldValue 、NewValue 、Operator、 OperateIp 、OperateTime 、Status
OldValue:把原来的对象信息转化为json数据存储
2、还原操作:先根据TargetId查出当前记录值NewValue 、把之前记录的OldValue替换NewValue
3、根据类型查询记录
@Service
public class SysLogService {
@Resource
private SysLogMapper sysLogMapper;
@Resource
private SysDeptMapper sysDeptMapper;
@Resource
private SysUserMapper sysUserMapper;
@Resource
private SysAclModuleMapper sysAclModuleMapper;
@Resource
private SysAclMapper sysAclMapper;
@Resource
private SysRoleMapper sysRoleMapper;
@Resource
private SysRoleAclService sysRoleAclService;
@Resource
private SysRoleUserService sysRoleUserService;
//确定哪些东西需要记录
public void saveDeptLog(SysDept before, SysDept after) {
SysLogWithBLOBs sysLog = new SysLogWithBLOBs();
sysLog.setType(LogType.TYPE_DEPT);
sysLog.setTargetId(after == null ? before.getId() : after.getId());
sysLog.setOldValue(before == null ? "" : JsonMapper.obj2String(before));
sysLog.setNewValue(after == null ? "" : JsonMapper.obj2String(after));
sysLog.setOperator(RequestHolder.getCurrentUser().getUsername());
sysLog.setOperateIp(IpUtil.getRemoteIp(RequestHolder.getCurrentRequest()));
sysLog.setOperateTime(new Date());
sysLog.setStatus(1);
sysLogMapper.insertSelective(sysLog);
}
public void saveUserLog(SysUser before, SysUser after) {
SysLogWithBLOBs sysLog = new SysLogWithBLOBs();
sysLog.setType(LogType.TYPE_USER);
sysLog.setTargetId(after == null ? before.getId() : after.getId());
sysLog.setOldValue(before == null ? "" : JsonMapper.obj2String(before));
sysLog.s