From 0b02eeac8a5967fccf059e750a01f99554b3397c Mon Sep 17 00:00:00 2001
From: dongzeliang <2746733890@qq.com>
Date: Mon, 3 Mar 2025 17:03:20 +0800
Subject: [PATCH] =?UTF-8?q?feat():=20=E5=A2=9E=E5=8A=A0mybatis-plus?=
=?UTF-8?q?=E5=85=83=E6=95=B0=E6=8D=AE=E5=A1=AB=E5=85=85?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
cloud-common/cloud-common-core/pom.xml | 7 +++
.../muyu/common/core/basic/SecurityBasic.java | 16 +++++++
.../MybatisPlusConfig.java | 2 +-
.../mybatisplus/SystemMetaObjectHandler.java | 46 +++++++++++++++++++
...ot.autoconfigure.AutoConfiguration.imports | 3 +-
.../security/service/SecurityBasicImpl.java | 24 ++++++++++
...ot.autoconfigure.AutoConfiguration.imports | 1 +
.../gateway/filter/ValidateCodeFilter.java | 20 ++++----
8 files changed, 109 insertions(+), 10 deletions(-)
create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/basic/SecurityBasic.java
rename cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/{config => mybatisplus}/MybatisPlusConfig.java (94%)
create mode 100644 cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/mybatisplus/SystemMetaObjectHandler.java
create mode 100644 cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/service/SecurityBasicImpl.java
diff --git a/cloud-common/cloud-common-core/pom.xml b/cloud-common/cloud-common-core/pom.xml
index f3591e8..1316e57 100644
--- a/cloud-common/cloud-common-core/pom.xml
+++ b/cloud-common/cloud-common-core/pom.xml
@@ -141,10 +141,17 @@
apm-toolkit-logback-1.x
+
cn.hutool
hutool-all
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+
diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/basic/SecurityBasic.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/basic/SecurityBasic.java
new file mode 100644
index 0000000..4feb974
--- /dev/null
+++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/basic/SecurityBasic.java
@@ -0,0 +1,16 @@
+package com.muyu.common.core.basic;
+
+/**
+ * @author dongzeliang
+ * @version 1.0
+ * @description: 权限获取标准接口
+ * @date 2025/3/1 11:57
+ */
+public interface SecurityBasic {
+
+ /**
+ * 获取当前登录用户的用户名称
+ * @return 当前登录用户名称
+ */
+ public String getUsername();
+}
diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/config/MybatisPlusConfig.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/mybatisplus/MybatisPlusConfig.java
similarity index 94%
rename from cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/config/MybatisPlusConfig.java
rename to cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/mybatisplus/MybatisPlusConfig.java
index 79cd0ff..ab9a9c9 100644
--- a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/config/MybatisPlusConfig.java
+++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/mybatisplus/MybatisPlusConfig.java
@@ -1,4 +1,4 @@
-package com.muyu.common.core.config;
+package com.muyu.common.core.mybatisplus;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/mybatisplus/SystemMetaObjectHandler.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/mybatisplus/SystemMetaObjectHandler.java
new file mode 100644
index 0000000..9bd0d87
--- /dev/null
+++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/mybatisplus/SystemMetaObjectHandler.java
@@ -0,0 +1,46 @@
+package com.muyu.common.core.mybatisplus;
+
+import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
+import com.muyu.common.core.basic.SecurityBasic;
+import lombok.AllArgsConstructor;
+import org.apache.ibatis.reflection.MetaObject;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+
+import java.util.Date;
+
+/**
+ * 框架字段自动填充器
+ * @author dongzeliang
+ * @version 1.0
+ * @description: 框架字段自动填充器
+ * @date 2025/3/1 11:51
+ */
+@AllArgsConstructor
+@ConditionalOnProperty(value = "basic.mybatis-plus.meta.enabled", havingValue = "true")
+public class SystemMetaObjectHandler implements MetaObjectHandler {
+
+ private final SecurityBasic securityBasic;
+
+ /**
+ * 插入元对象字段填充(用于插入时对公共字段的填充)
+ *
+ * @param metaObject 元对象
+ */
+ @Override
+ public void insertFill(MetaObject metaObject) {
+ this.strictInsertFill(metaObject, "createBy", String.class, securityBasic.getUsername());
+ this.strictInsertFill(metaObject, "createTime", Date.class, new Date());
+ }
+
+ /**
+ * 更新元对象字段填充(用于更新时对公共字段的填充)
+ *
+ * @param metaObject 元对象
+ */
+ @Override
+ public void updateFill(MetaObject metaObject) {
+
+ this.strictInsertFill(metaObject, "updateBy", String.class, securityBasic.getUsername());
+ this.strictInsertFill(metaObject, "updateTime", Date.class, new Date());
+ }
+}
diff --git a/cloud-common/cloud-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/cloud-common/cloud-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
index 0db8834..418c8d5 100644
--- a/cloud-common/cloud-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
+++ b/cloud-common/cloud-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -1,3 +1,4 @@
com.muyu.common.core.utils.SpringUtils
com.muyu.common.core.feign.FeginConfig
-com.muyu.common.core.config.MybatisPlusConfig
\ No newline at end of file
+com.muyu.common.core.mybatisplus.MybatisPlusConfig
+com.muyu.common.core.mybatisplus.SystemMetaObjectHandler
\ No newline at end of file
diff --git a/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/service/SecurityBasicImpl.java b/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/service/SecurityBasicImpl.java
new file mode 100644
index 0000000..ba3ed26
--- /dev/null
+++ b/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/service/SecurityBasicImpl.java
@@ -0,0 +1,24 @@
+package com.muyu.common.security.service;
+
+import com.muyu.common.core.basic.SecurityBasic;
+import com.muyu.common.security.utils.SecurityUtils;
+
+/**
+ * 登陆信息标准实现
+ * @author dongzeliang
+ * @version 1.0
+ * @description: 登陆信息标准实现
+ * @date 2025/3/1 11:59
+ */
+public class SecurityBasicImpl implements SecurityBasic {
+
+ /**
+ * 获取当前登录用户的用户名称
+ *
+ * @return 当前登录用户名称
+ */
+ @Override
+ public String getUsername() {
+ return SecurityUtils.getUsername();
+ }
+}
diff --git a/cloud-common/cloud-common-security/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/cloud-common/cloud-common-security/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
index f4e76b1..66ebfea 100644
--- a/cloud-common/cloud-common-security/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
+++ b/cloud-common/cloud-common-security/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -3,3 +3,4 @@ com.muyu.common.security.service.TokenService
com.muyu.common.security.aspect.PreAuthorizeAspect
com.muyu.common.security.aspect.InnerAuthAspect
com.muyu.common.security.handler.GlobalExceptionHandler
+com.muyu.common.security.service.SecurityBasicImpl
\ No newline at end of file
diff --git a/cloud-gateway/src/main/java/com/muyu/gateway/filter/ValidateCodeFilter.java b/cloud-gateway/src/main/java/com/muyu/gateway/filter/ValidateCodeFilter.java
index c0e40d7..630f3a5 100644
--- a/cloud-gateway/src/main/java/com/muyu/gateway/filter/ValidateCodeFilter.java
+++ b/cloud-gateway/src/main/java/com/muyu/gateway/filter/ValidateCodeFilter.java
@@ -9,10 +9,14 @@ import com.muyu.gateway.service.ValidateCodeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.gateway.filter.GatewayFilter;
import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory;
+import org.springframework.core.io.buffer.DataBuffer;
import org.springframework.core.io.buffer.DataBufferUtils;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.stereotype.Component;
+import reactor.core.publisher.Flux;
+
import java.nio.charset.StandardCharsets;
+import java.util.concurrent.atomic.AtomicReference;
/**
* 验证码过滤器
@@ -64,13 +68,13 @@ public class ValidateCodeFilter extends AbstractGatewayFilterFactory