diff --git a/pig-common/pig-common-mybatis/src/main/java/com/pig4cloud/pig/common/mybatis/config/MybatisPlusMetaObjectHandler.java b/pig-common/pig-common-mybatis/src/main/java/com/pig4cloud/pig/common/mybatis/config/MybatisPlusMetaObjectHandler.java index 67b0f7cfb4fad05f996fa56c14bb16a2c438c068..1e044da38915bc20a91cdaeda896827f70ea5f0a 100644 --- a/pig-common/pig-common-mybatis/src/main/java/com/pig4cloud/pig/common/mybatis/config/MybatisPlusMetaObjectHandler.java +++ b/pig-common/pig-common-mybatis/src/main/java/com/pig4cloud/pig/common/mybatis/config/MybatisPlusMetaObjectHandler.java @@ -1,7 +1,7 @@ package com.pig4cloud.pig.common.mybatis.config; -import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; +import com.baomidou.mybatisplus.core.metadata.TableInfo; import com.pig4cloud.pig.common.core.constant.CommonConstants; import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.reflection.MetaObject; @@ -10,7 +10,6 @@ import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.util.ClassUtils; -import java.nio.charset.Charset; import java.time.LocalDateTime; import java.util.Optional; @@ -27,20 +26,20 @@ public class MybatisPlusMetaObjectHandler implements MetaObjectHandler { log.debug("mybatis plus start insert fill ...."); LocalDateTime now = LocalDateTime.now(); - fillValIfNullByName("createTime", now, metaObject, true); - fillValIfNullByName("updateTime", now, metaObject, true); - fillValIfNullByName("createBy", getUserName(), metaObject, true); - fillValIfNullByName("updateBy", getUserName(), metaObject, true); + fillValIfNullByName("createTime", now, metaObject, true, true); + fillValIfNullByName("updateTime", now, metaObject, true, true); + fillValIfNullByName("createBy", getUserName(), metaObject, true, true); + fillValIfNullByName("updateBy", getUserName(), metaObject, true, true); // 删除标记自动填充 - fillValIfNullByName("delFlag", CommonConstants.STATUS_NORMAL, metaObject, true); + fillValIfNullByName("delFlag", CommonConstants.STATUS_NORMAL, metaObject, true, true); } @Override public void updateFill(MetaObject metaObject) { log.debug("mybatis plus start update fill ...."); - fillValIfNullByName("updateTime", LocalDateTime.now(), metaObject, true); - fillValIfNullByName("updateBy", getUserName(), metaObject, true); + fillValIfNullByName("updateTime", LocalDateTime.now(), metaObject, true, false); + fillValIfNullByName("updateBy", getUserName(), metaObject, true, false); } /** @@ -50,7 +49,7 @@ public class MybatisPlusMetaObjectHandler implements MetaObjectHandler { * @param metaObject MetaObject * @param isCover 是否覆盖原有值,避免更新操作手动入参 */ - private static void fillValIfNullByName(String fieldName, Object fieldVal, MetaObject metaObject, boolean isCover) { + private void fillValIfNullByName(String fieldName, Object fieldVal, MetaObject metaObject, boolean isCover, boolean insertFill) { // 0. 如果填充值为空 if (fieldVal == null) { return; @@ -61,15 +60,18 @@ public class MybatisPlusMetaObjectHandler implements MetaObjectHandler { return; } // 2. 如果用户有手动设置的值 - Object userSetValue = metaObject.getValue(fieldName); - String setValueStr = StrUtil.str(userSetValue, Charset.defaultCharset()); - if (StrUtil.isNotBlank(setValueStr) && !isCover) { + if (!isCover) { return; } // 3. field 类型相同时设置 Class getterType = metaObject.getGetterType(fieldName); if (ClassUtils.isAssignableValue(getterType, fieldVal)) { - metaObject.setValue(fieldName, fieldVal); + TableInfo tableInfo = findTableInfo(metaObject); + if (tableInfo.getFieldList().stream().anyMatch((i) -> i.getProperty().equals(fieldName) + && getterType.equals(i.getPropertyType()) + && (insertFill && i.isWithInsertFill() || !insertFill && i.isWithUpdateFill()))) { + metaObject.setValue(fieldName, fieldVal); + } } }