You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

51 lines
2.1 KiB

8 months ago
4 months ago
8 months ago
  1. package com.gaotao.config;
  2. import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
  3. import com.gaotao.modules.sys.entity.SysUserEntity;
  4. import org.apache.ibatis.reflection.MetaObject;
  5. import org.apache.logging.log4j.LogManager;
  6. import org.apache.logging.log4j.Logger;
  7. import org.apache.shiro.SecurityUtils;
  8. import org.springframework.stereotype.Component;
  9. import java.util.Date;
  10. /*
  11. * @Author li_she
  12. * @Description 自定义自动填充策略 @TableField(fill = FieldFill.INSERT)
  13. * @Date 2021/4/14 10:12
  14. **/
  15. @Component
  16. public class MyMetaObjectHandler implements MetaObjectHandler {
  17. private Logger logger = LogManager.getLogger(getClass());
  18. @Override
  19. public void insertFill(MetaObject metaObject) {
  20. logger.info("start insert fill ....");
  21. this.strictInsertFill(metaObject,"createdDate",Date.class, new Date());
  22. try {
  23. SysUserEntity user = (SysUserEntity) SecurityUtils.getSubject().getPrincipal();
  24. if (user != null) {
  25. this.strictInsertFill(metaObject,"site",String.class, user.getSite());
  26. this.strictInsertFill(metaObject,"createdBy",String.class, user.getUserDisplay());
  27. } else {
  28. // 当没有用户上下文时,使用默认值
  29. this.strictInsertFill(metaObject,"site",String.class, "SYSTEM");
  30. this.strictInsertFill(metaObject,"createdBy",String.class, "SYSTEM");
  31. logger.warn("No user context found, using default values for site and createdBy");
  32. }
  33. } catch (Exception e) {
  34. // 当获取用户信息失败时,使用默认值
  35. this.strictInsertFill(metaObject,"site",String.class, "SYSTEM");
  36. this.strictInsertFill(metaObject,"createdBy",String.class, "SYSTEM");
  37. logger.warn("Failed to get user context, using default values: " + e.getMessage());
  38. }
  39. }
  40. @Override
  41. public void updateFill(MetaObject metaObject) {
  42. logger.info("start update fill ....");
  43. this.strictUpdateFill(metaObject, "updatedDate", Date.class, new Date());
  44. }
  45. }