BaseEntityMetaObjectHandler.java 3.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. package com.github.jfcloud.gene.handler;
  2. import cn.hutool.core.util.StrUtil;
  3. import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
  4. import com.github.jfcloud.common.security.util.SecurityUtils;
  5. import com.github.jfcloud.gene.common.util.UserUtil;
  6. import org.apache.ibatis.reflection.MetaObject;
  7. import org.slf4j.Logger;
  8. import org.slf4j.LoggerFactory;
  9. import org.springframework.util.ClassUtils;
  10. import java.nio.charset.Charset;
  11. import java.time.LocalDateTime;
  12. import java.util.Date;
  13. import java.util.HashMap;
  14. import java.util.Map;
  15. public class BaseEntityMetaObjectHandler implements MetaObjectHandler {
  16. private static final Logger log = LoggerFactory.getLogger(BaseEntityMetaObjectHandler.class);
  17. private static void fillValIfNullByName(String fieldName, Object fieldVal, MetaObject metaObject, boolean isCover) {
  18. if (fieldVal != null) {
  19. if (metaObject.hasSetter(fieldName)) {
  20. Object userSetValue = metaObject.getValue(fieldName);
  21. String setValueStr = StrUtil.str(userSetValue, Charset.defaultCharset());
  22. if (!StrUtil.isNotBlank(setValueStr) || isCover) {
  23. Class<?> getterType = metaObject.getGetterType(fieldName);
  24. if (ClassUtils.isAssignableValue(getterType, fieldVal)) {
  25. metaObject.setValue(fieldName, fieldVal);
  26. }
  27. }
  28. }
  29. }
  30. }
  31. public void insertFill(MetaObject metaObject) {
  32. log.debug("mybatis plus start insert fill ....");
  33. Map<String, Object> fieldsToFill = new HashMap<>();
  34. //判断创建时间类型
  35. setTime("createTime", metaObject, fieldsToFill);
  36. setTime("create_time", metaObject, fieldsToFill);
  37. setTime("updateTime", metaObject, fieldsToFill);
  38. setTime("update_time", metaObject, fieldsToFill);
  39. fieldsToFill.put("createBy", UserUtil.getUserName());
  40. fieldsToFill.put("delFlag", "0");
  41. fieldsToFill.put("deleted", "0");
  42. fieldsToFill.put("deptId", UserUtil.getDeptId());
  43. fieldsToFill.put("groupIndex", this.getGroupIndex());
  44. fieldsToFill.put("groupPi", this.getGroupPi());
  45. fieldsToFill.put("tenantId", UserUtil.getTenantId());
  46. this.fillFieldsIfExist(metaObject, fieldsToFill, false);
  47. }
  48. private void setTime(String propertyName, MetaObject metaObject, Map<String, Object> fillMap) {
  49. if (metaObject.hasGetter(propertyName)) {
  50. Class<?> createTimeType = metaObject.getGetterType(propertyName);
  51. if (createTimeType.equals(Date.class)) {
  52. fillMap.put(propertyName, new Date());
  53. } else if (createTimeType.equals(LocalDateTime.class)) {
  54. fillMap.put(propertyName, LocalDateTime.now());
  55. }
  56. }
  57. }
  58. private void fillFieldsIfExist(MetaObject metaObject, Map<String, Object> fieldsToFill, boolean isCover) {
  59. for(Map.Entry<String, Object> entry : fieldsToFill.entrySet()) {
  60. String fieldName = entry.getKey();
  61. Object defaultValue = entry.getValue();
  62. if (metaObject.hasGetter(fieldName)) {
  63. fillValIfNullByName(fieldName, defaultValue, metaObject, isCover);
  64. }
  65. }
  66. }
  67. public void updateFill(MetaObject metaObject) {
  68. Map<String, Object> fieldsToFill = new HashMap<>();
  69. fieldsToFill.put("updateTime", new Date());
  70. fieldsToFill.put("update_time", new Date());
  71. fieldsToFill.put("updateBy", UserUtil.getUserName());
  72. this.fillFieldsIfExist(metaObject, fieldsToFill, false);
  73. }
  74. private Integer getGroupIndex() {
  75. return SecurityUtils.getGroupIndex();
  76. }
  77. private Long getGroupPi() {
  78. return SecurityUtils.getGroupPi();
  79. }
  80. }