package jnpf.database.config; import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import jnpf.constant.GlobalConst; import jnpf.database.util.LogicDeleteHelper; import jnpf.database.util.TenantDataSourceUtil; import jnpf.util.DateUtil; import jnpf.util.UserProvider; import org.apache.ibatis.reflection.MetaObject; import org.springframework.stereotype.Component; import java.util.Date; /** * @author JNPF开发平台组 * @version V3.1.0 * @copyright 引迈信息技术有限公司(https://www.jnpfsoft.com) * @date 2020年12月22日 下午20:14 */ @Component public class MybatisPlusMetaObjectHandler implements MetaObjectHandler { @Override public void insertFill(MetaObject metaObject) { String userId = UserProvider.getLoginUserId(); Object enabledMark = this.getFieldValByName("enabledMark", metaObject); Object creatorUserId = this.getFieldValByName("creatorUserId", metaObject); Object creatorTime = this.getFieldValByName("creatorTime", metaObject); Object creatorUser = this.getFieldValByName("creatorUser", metaObject); if (enabledMark == null) { this.strictInsertFill(metaObject, "enabledMark", () -> 1, Integer.class); } if (creatorUserId == null) { this.strictInsertFill(metaObject, "creatorUserId", () -> userId, String.class); } if (creatorTime == null) { this.strictInsertFill(metaObject, "creatorTime", DateUtil::getNowDate, Date.class); } if (creatorUser == null) { this.strictInsertFill(metaObject, "creatorUser", () -> userId, String.class); } String tenantColumn = TenantDataSourceUtil.getTenantColumn(); if (GlobalConst.DEFAULT_TENANT_VALUE.equals(tenantColumn)) { this.strictInsertFill(metaObject, "tenantId", () -> tenantColumn, String.class); } else { this.setFieldValByName("tenantId", TenantDataSourceUtil.getTenantColumn(), metaObject); } } @Override public void updateFill(MetaObject metaObject) { String userId = UserProvider.getLoginUserId(); this.strictUpdateFill(metaObject, "lastModifyTime", DateUtil::getNowDate, Date.class); this.strictUpdateFill(metaObject, "lastModifyUserId", () -> userId, String.class); this.strictUpdateFill(metaObject, "lastModifyUser", () -> userId, String.class); String tenantColumn = TenantDataSourceUtil.getTenantColumn(); if (GlobalConst.DEFAULT_TENANT_VALUE.equals(tenantColumn)) { this.strictUpdateFill(metaObject, "tenantId", () -> tenantColumn, String.class); } else { this.setFieldValByName("tenantId", TenantDataSourceUtil.getTenantColumn(), metaObject); } if(LogicDeleteHelper.isDeleteAction()){ this.strictUpdateFill(metaObject, "deleteTime", DateUtil::getNowDate, Date.class); this.strictUpdateFill(metaObject, "deleteUserId", () -> userId, String.class); } } }