package com.gaotao.config; import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import com.gaotao.modules.sys.entity.SysUserEntity; import org.apache.ibatis.reflection.MetaObject; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.apache.shiro.SecurityUtils; import org.springframework.stereotype.Component; import java.util.Date; /* * @Author li_she * @Description 自定义自动填充策略 @TableField(fill = FieldFill.INSERT) * @Date 2021/4/14 10:12 **/ @Component public class MyMetaObjectHandler implements MetaObjectHandler { private Logger logger = LogManager.getLogger(getClass()); @Override public void insertFill(MetaObject metaObject) { logger.info("start insert fill ...."); this.strictInsertFill(metaObject,"createdDate",Date.class, new Date()); try { SysUserEntity user = (SysUserEntity) SecurityUtils.getSubject().getPrincipal(); if (user != null) { this.strictInsertFill(metaObject,"site",String.class, user.getSite()); this.strictInsertFill(metaObject,"createdBy",String.class, user.getUserDisplay()); } else { // 当没有用户上下文时,使用默认值 this.strictInsertFill(metaObject,"site",String.class, "SYSTEM"); this.strictInsertFill(metaObject,"createdBy",String.class, "SYSTEM"); logger.warn("No user context found, using default values for site and createdBy"); } } catch (Exception e) { // 当获取用户信息失败时,使用默认值 this.strictInsertFill(metaObject,"site",String.class, "SYSTEM"); this.strictInsertFill(metaObject,"createdBy",String.class, "SYSTEM"); logger.warn("Failed to get user context, using default values: " + e.getMessage()); } } @Override public void updateFill(MetaObject metaObject) { logger.info("start update fill ...."); this.strictUpdateFill(metaObject, "updatedDate", Date.class, new Date()); } }