package com.mes.config; import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import org.apache.ibatis.reflection.MetaObject; import org.springframework.stereotype.Component; import java.time.LocalDateTime; /** * 统一处理公共字段(created_time、updated_time、created_by、updated_by)的自动填充 */ @Component public class MybatisMetaObjectHandler implements MetaObjectHandler { @Override public void insertFill(MetaObject metaObject) { LocalDateTime now = LocalDateTime.now(); String operator = resolveOperator(); strictInsertFill(metaObject, "createdTime", LocalDateTime.class, now); strictInsertFill(metaObject, "updatedTime", LocalDateTime.class, now); strictInsertFill(metaObject, "createdBy", String.class, operator); strictInsertFill(metaObject, "updatedBy", String.class, operator); } @Override public void updateFill(MetaObject metaObject) { strictUpdateFill(metaObject, "updatedTime", LocalDateTime.class, LocalDateTime.now()); strictUpdateFill(metaObject, "updatedBy", String.class, resolveOperator()); } private String resolveOperator() { // 注意:这里可以接入Spring Security或其他认证框架获取当前登录用户 // 例如:SecurityContextHolder.getContext().getAuthentication().getName() // 当前暂时使用system作为默认值 try { // 可以尝试从请求上下文获取用户信息 // 这里暂时返回system,后续可以扩展 return "system"; } catch (Exception e) { return "system"; } } }