package com.tcm.training.admin.config;
|
|
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
|
import com.tcm.training.admin.user.entity.SysUser;
|
import com.tcm.training.admin.user.mapper.SysUserMapper;
|
import cn.dev33.satoken.stp.StpUtil;
|
import org.apache.ibatis.reflection.MetaObject;
|
import org.springframework.beans.factory.ObjectProvider;
|
import org.springframework.stereotype.Component;
|
|
@Component
|
public class AuditMetaObjectHandler implements MetaObjectHandler {
|
|
private static final String SYSTEM_OPERATOR = "系统初始化";
|
|
private final ObjectProvider<SysUserMapper> sysUserMapperProvider;
|
|
public AuditMetaObjectHandler(ObjectProvider<SysUserMapper> sysUserMapperProvider) {
|
this.sysUserMapperProvider = sysUserMapperProvider;
|
}
|
|
@Override
|
public void insertFill(MetaObject metaObject) {
|
String operatorName = resolveOperatorName();
|
this.strictInsertFill(metaObject, "createdBy", String.class, operatorName);
|
this.strictInsertFill(metaObject, "updatedBy", String.class, operatorName);
|
}
|
|
@Override
|
public void updateFill(MetaObject metaObject) {
|
this.setFieldValByName("updatedBy", resolveOperatorName(), metaObject);
|
}
|
|
private String resolveOperatorName() {
|
try {
|
if (!StpUtil.isLogin()) {
|
return SYSTEM_OPERATOR;
|
}
|
Long userId = StpUtil.getLoginIdAsLong();
|
SysUserMapper sysUserMapper = sysUserMapperProvider.getIfAvailable();
|
if (sysUserMapper == null) {
|
return SYSTEM_OPERATOR;
|
}
|
SysUser user = sysUserMapper.selectById(userId);
|
if (user == null) {
|
return SYSTEM_OPERATOR;
|
}
|
String nickname = user.getNickname();
|
if (nickname == null || nickname.trim().isEmpty()) {
|
return SYSTEM_OPERATOR;
|
}
|
return nickname.trim();
|
} catch (Exception e) {
|
return SYSTEM_OPERATOR;
|
}
|
}
|
}
|