package com.ruoyi.common.handler;
|
|
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
|
import com.ruoyi.common.utils.SecurityUtils;
|
import org.apache.ibatis.reflection.MetaObject;
|
import org.springframework.stereotype.Component;
|
|
import java.time.LocalDateTime;
|
|
@Component
|
public class MyMetaObjectHandler implements MetaObjectHandler {
|
|
private static final String SYSTEM_USER = "system";
|
|
@Override
|
public void insertFill(MetaObject meta) {
|
LocalDateTime now = LocalDateTime.now();
|
String userId = getUserId();
|
|
if (hasField(meta, "createBy")) {
|
strictInsertFill(meta, "createBy", String.class, userId);
|
}
|
if (hasField(meta, "updateBy")) {
|
strictInsertFill(meta, "updateBy", String.class, userId);
|
}
|
if (hasField(meta, "createTime")) {
|
strictInsertFill(meta, "createTime", LocalDateTime.class, now);
|
}
|
if (hasField(meta, "updateTime")) {
|
strictInsertFill(meta, "updateTime", LocalDateTime.class, now);
|
}
|
}
|
|
@Override
|
public void updateFill(MetaObject meta) {
|
LocalDateTime now = LocalDateTime.now();
|
String userId = getUserId();
|
|
if (hasField(meta, "updateBy")) {
|
strictUpdateFill(meta, "updateBy", String.class, userId);
|
}
|
if (hasField(meta, "updateTime")) {
|
setFieldValByName("updateTime", now, meta);
|
}
|
}
|
|
private String getUserId() {
|
try {
|
Long uid = SecurityUtils.getLoginUser().getUserId();
|
return uid != null ? uid.toString() : SYSTEM_USER;
|
} catch (Exception e) {
|
return SYSTEM_USER;
|
}
|
}
|
|
private boolean hasField(MetaObject meta, String fieldName) {
|
if (meta == null || fieldName == null) {
|
return false;
|
}
|
return meta.hasGetter(fieldName) || meta.hasSetter(fieldName);
|
}
|
}
|