From 63ba4c56009ea521cafc47828d4a0c46cb7a835c Mon Sep 17 00:00:00 2001 From: memorylkf <312904636@qq.com> Date: Mon, 22 Dec 2025 14:03:15 +0800 Subject: [PATCH] =?UTF-8?q?fix:[=E5=9F=BA=E7=A1=80=E9=85=8D=E7=BD=AE]=20?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E9=BB=98=E8=AE=A4=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hxhq-common/hxhq-common-core/pom.xml | 6 -- .../hxhq/common/core/config/MyBatisPlusConfig.java | 66 ------------------- ...rk.boot.autoconfigure.AutoConfiguration.imports | 3 +- hxhq-common/hxhq-common-security/pom.xml | 5 ++ .../security/config/BaseMetaObjectHandler.java | 73 ++++++++++++++++++++++ .../common/security/config/MyBatisPlusConfig.java | 66 +++++++++++++++++++ ...rk.boot.autoconfigure.AutoConfiguration.imports | 1 + 7 files changed, 146 insertions(+), 74 deletions(-) delete mode 100644 hxhq-common/hxhq-common-core/src/main/java/com/hxhq/common/core/config/MyBatisPlusConfig.java create mode 100644 hxhq-common/hxhq-common-security/src/main/java/com/hxhq/common/security/config/BaseMetaObjectHandler.java create mode 100644 hxhq-common/hxhq-common-security/src/main/java/com/hxhq/common/security/config/MyBatisPlusConfig.java diff --git a/hxhq-common/hxhq-common-core/pom.xml b/hxhq-common/hxhq-common-core/pom.xml index de321a9..69d0b65 100644 --- a/hxhq-common/hxhq-common-core/pom.xml +++ b/hxhq-common/hxhq-common-core/pom.xml @@ -112,12 +112,6 @@ mybatis-plus-boot-starter - - - com.hxhq - hxhq-common-security - - diff --git a/hxhq-common/hxhq-common-core/src/main/java/com/hxhq/common/core/config/MyBatisPlusConfig.java b/hxhq-common/hxhq-common-core/src/main/java/com/hxhq/common/core/config/MyBatisPlusConfig.java deleted file mode 100644 index 4c050e7..0000000 --- a/hxhq-common/hxhq-common-core/src/main/java/com/hxhq/common/core/config/MyBatisPlusConfig.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.hxhq.common.core.config; - -import com.baomidou.mybatisplus.annotation.DbType; -import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; -import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; -import com.baomidou.mybatisplus.extension.plugins.inner.BlockAttackInnerInterceptor; -import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor; -import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.transaction.annotation.EnableTransactionManagement; - -/** - * @author memory - */ -@Configuration -@EnableTransactionManagement(proxyTargetClass = true) -public class MyBatisPlusConfig { - - @Bean - public MybatisPlusInterceptor mybatisPlusInterceptor() - { - MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); - // 分页插件 - interceptor.addInnerInterceptor(paginationInnerInterceptor()); - // 乐观锁插件 - interceptor.addInnerInterceptor(optimisticLockerInnerInterceptor()); - // 阻断插件 - interceptor.addInnerInterceptor(blockAttackInnerInterceptor()); - return interceptor; - } - - /** - * 分页插件,自动识别数据库类型 https://baomidou.com/guide/interceptor-pagination.html - */ - public PaginationInnerInterceptor paginationInnerInterceptor() - { - PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(); - // 设置数据库类型为mysql - paginationInnerInterceptor.setDbType(DbType.MYSQL); - // 设置最大单页限制数量,默认 500 条,-1 不受限制 - paginationInnerInterceptor.setMaxLimit(-1L); - return paginationInnerInterceptor; - } - - /** - * 乐观锁插件 https://baomidou.com/guide/interceptor-optimistic-locker.html - */ - public OptimisticLockerInnerInterceptor optimisticLockerInnerInterceptor() - { - return new OptimisticLockerInnerInterceptor(); - } - - /** - * 如果是对全表的删除或更新操作,就会终止该操作 https://baomidou.com/guide/interceptor-block-attack.html - */ - public BlockAttackInnerInterceptor blockAttackInnerInterceptor() - { - return new BlockAttackInnerInterceptor(); - } - - @Bean - public MetaObjectHandler metaObjectHandler(){ - return new BaseMetaObjectHandler(); - } -} diff --git a/hxhq-common/hxhq-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/hxhq-common/hxhq-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index e0a51ca..e341c46 100644 --- a/hxhq-common/hxhq-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/hxhq-common/hxhq-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1,2 +1 @@ -com.hxhq.common.core.utils.SpringUtils -com.hxhq.common.core.config.MyBatisPlusConfig \ No newline at end of file +com.hxhq.common.core.utils.SpringUtils \ No newline at end of file diff --git a/hxhq-common/hxhq-common-security/pom.xml b/hxhq-common/hxhq-common-security/pom.xml index 2ed3959..a5dd55c 100644 --- a/hxhq-common/hxhq-common-security/pom.xml +++ b/hxhq-common/hxhq-common-security/pom.xml @@ -34,6 +34,11 @@ hxhq-common-redis + + com.baomidou + mybatis-plus-boot-starter + + diff --git a/hxhq-common/hxhq-common-security/src/main/java/com/hxhq/common/security/config/BaseMetaObjectHandler.java b/hxhq-common/hxhq-common-security/src/main/java/com/hxhq/common/security/config/BaseMetaObjectHandler.java new file mode 100644 index 0000000..51e7414 --- /dev/null +++ b/hxhq-common/hxhq-common-security/src/main/java/com/hxhq/common/security/config/BaseMetaObjectHandler.java @@ -0,0 +1,73 @@ +package com.hxhq.common.security.config; + + +import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; +import com.hxhq.common.security.utils.SecurityUtils; +import org.apache.ibatis.reflection.MetaObject; + +import java.util.Date; + +/** + * + * @author memory + */ +public class BaseMetaObjectHandler implements MetaObjectHandler { + /** + * 删除标记 + */ + public static final String DEL_FLAG = "delFlag"; + /** + * 创建时间 + */ + public static final String CREATE_BY = "createBy"; + /** + * 创建时间 + */ + public static final String CREATE_DATE = "createTime"; + /** + * 创建时间 + */ + public static final String UPDATE_BY = "updateBy"; + /** + * 更新时间 + */ + public static final String UPDATE_DATE = "updateTime"; + + /** + * 新增 + */ + @Override + public void insertFill(MetaObject metaObject) { + // 创建用户 + Object createBy = getFieldValByName(CREATE_BY, metaObject); + if (createBy == null || createBy.equals("")) { + setFieldValByName(CREATE_BY, SecurityUtils.getLoginUserOfEmpty().getUserid()==null?"": SecurityUtils.getLoginUserOfEmpty().getUserid().toString(), metaObject); + } + + // 创建时间 + Object createDate = getFieldValByName(CREATE_DATE, metaObject); + if (createDate == null) { + setFieldValByName(CREATE_DATE, new Date(), metaObject); + } + + // 删除标记 + Object delFlag = getFieldValByName(DEL_FLAG, metaObject); + if (delFlag == null) { + setFieldValByName(DEL_FLAG, "0", metaObject); + } + } + + @Override + public void updateFill(MetaObject metaObject) { +// Object updateBy = getFieldValByName(UPDATE_BY, metaObject); +// if (updateBy == null || updateBy.equals("")) { + setFieldValByName(UPDATE_BY, SecurityUtils.getLoginUserOfEmpty().getUserid()==null?"": SecurityUtils.getLoginUserOfEmpty().getUserid().toString(), metaObject); +// } + + // 更新用户 +// Object updateDate = getFieldValByName(UPDATE_DATE, metaObject); +// if (updateDate == null) { + setFieldValByName(UPDATE_DATE, new Date(), metaObject); +// } + } +} \ No newline at end of file diff --git a/hxhq-common/hxhq-common-security/src/main/java/com/hxhq/common/security/config/MyBatisPlusConfig.java b/hxhq-common/hxhq-common-security/src/main/java/com/hxhq/common/security/config/MyBatisPlusConfig.java new file mode 100644 index 0000000..26357b1 --- /dev/null +++ b/hxhq-common/hxhq-common-security/src/main/java/com/hxhq/common/security/config/MyBatisPlusConfig.java @@ -0,0 +1,66 @@ +package com.hxhq.common.security.config; + +import com.baomidou.mybatisplus.annotation.DbType; +import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; +import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; +import com.baomidou.mybatisplus.extension.plugins.inner.BlockAttackInnerInterceptor; +import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor; +import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +/** + * @author memory + */ +@Configuration +@EnableTransactionManagement(proxyTargetClass = true) +public class MyBatisPlusConfig { + + @Bean + public MybatisPlusInterceptor mybatisPlusInterceptor() + { + MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); + // 分页插件 + interceptor.addInnerInterceptor(paginationInnerInterceptor()); + // 乐观锁插件 + interceptor.addInnerInterceptor(optimisticLockerInnerInterceptor()); + // 阻断插件 + interceptor.addInnerInterceptor(blockAttackInnerInterceptor()); + return interceptor; + } + + /** + * 分页插件,自动识别数据库类型 https://baomidou.com/guide/interceptor-pagination.html + */ + public PaginationInnerInterceptor paginationInnerInterceptor() + { + PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(); + // 设置数据库类型为mysql + paginationInnerInterceptor.setDbType(DbType.MYSQL); + // 设置最大单页限制数量,默认 500 条,-1 不受限制 + paginationInnerInterceptor.setMaxLimit(-1L); + return paginationInnerInterceptor; + } + + /** + * 乐观锁插件 https://baomidou.com/guide/interceptor-optimistic-locker.html + */ + public OptimisticLockerInnerInterceptor optimisticLockerInnerInterceptor() + { + return new OptimisticLockerInnerInterceptor(); + } + + /** + * 如果是对全表的删除或更新操作,就会终止该操作 https://baomidou.com/guide/interceptor-block-attack.html + */ + public BlockAttackInnerInterceptor blockAttackInnerInterceptor() + { + return new BlockAttackInnerInterceptor(); + } + + @Bean + public MetaObjectHandler metaObjectHandler(){ + return new BaseMetaObjectHandler(); + } +} diff --git a/hxhq-common/hxhq-common-security/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/hxhq-common/hxhq-common-security/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index b091e33..b57002a 100644 --- a/hxhq-common/hxhq-common-security/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/hxhq-common/hxhq-common-security/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -3,3 +3,4 @@ com.hxhq.common.security.service.TokenService com.hxhq.common.security.aspect.PreAuthorizeAspect com.hxhq.common.security.aspect.InnerAuthAspect com.hxhq.common.security.handler.GlobalExceptionHandler +com.hxhq.common.security.config.MyBatisPlusConfig \ No newline at end of file