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 sysUserMapperProvider; public AuditMetaObjectHandler(ObjectProvider 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; } } }