表结构
create table operation_log
(
id int auto_increment
primary key,
create_time timestamp default CURRENT_TIMESTAMP not null,
update_time timestamp default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP,
after_value text null comment '修改后',
before_value text null comment '修改前',
entity varchar(64) null comment '模块',
entity_id int default 0 null comment '模块对应的id',
ip varchar(64) null comment 'ip',
operation_auth_id varchar(64) default '0' null comment '操作人authid',
operation_action varchar(64) default '0' null comment '操作动作 自行定义方便后续展示,什么取消 提出等等',
operation_time timestamp null comment '操作时间',
operation_type varchar(64) null comment '操作类型',
operation_user_name varchar(64) null comment '操作人账号',
operation_user_real_name varchar(64) null comment '操作人姓名',
operation_user_type varchar(64) null comment '操作人类型',
operation_user_wx_union_id varchar(64) default '0' null comment '操作人wxUnionId',
sno varchar(64) null comment '操作序列号,多条记录关联可用'
);
create index operation_log_entity_id_index
on operation_log (entity_id);
获取详细信息 代码 java (减掉 list判empty等)
// 根据创建时间正序查 根据id正序查同理
List<OperationLog> logAll = findByEntityId(id);
List<Object> result = new ArrayList<>(logAll.size());
// 存放 每一次变更前的信息 将 after 填充完整
Object bak = new Object();
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
for (OperationLog log : logAll){
Object tmp = new Object();
result.add(tmp);
Object afterValue = objectMapper.readValue(log.getAfterValue(), Object.class);
BeanUtils.copyProperties(afterValue,bak,getNullPropertyNames(afterValue));
BeanUtils.copyProperties(bak,tmp);
}
public static String[] getNullPropertyNames (Object source) {
final BeanWrapper src = new BeanWrapperImpl(source);
java.beans.PropertyDescriptor[] pds = src.getPropertyDescriptors();
Set<String> emptyNames = new HashSet<String>();
for(java.beans.PropertyDescriptor pd : pds) {
Object srcValue = src.getPropertyValue(pd.getName());
if (srcValue == null) emptyNames.add(pd.getName());
}
String[] result = new String[emptyNames.size()];
return emptyNames.toArray(result);
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/76480.html