From 921baa182e47807cb0cb949999c9d9a588ff34a9 Mon Sep 17 00:00:00 2001 From: chenbowen Date: Wed, 7 Jan 2026 13:36:40 +0800 Subject: [PATCH 1/8] =?UTF-8?q?1.=20=E7=BB=9F=E4=B8=80=20ZStack=20?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E7=8E=AF=E5=A2=83=E9=9B=86=E7=BE=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deployment.yaml | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/deployment.yaml b/deployment.yaml index f2e31e3e..051c0c82 100644 --- a/deployment.yaml +++ b/deployment.yaml @@ -2,7 +2,7 @@ #apiVersion: apps/v1 #kind: Deployment #metadata: -# namespace: ns-d6a0e78ebd674c279614498e4c57b133 +# namespace: ns-f16a3067ca7b434aad127d15eac82503 # name: zt-gateway # labels: # app: zt-gateway @@ -51,7 +51,7 @@ apiVersion: v1 kind: Service metadata: - namespace: ns-d6a0e78ebd674c279614498e4c57b133 + namespace: ns-f16a3067ca7b434aad127d15eac82503 name: zt-gateway spec: type: NodePort @@ -67,7 +67,7 @@ spec: apiVersion: apps/v1 kind: Deployment metadata: - namespace: ns-d6a0e78ebd674c279614498e4c57b133 + namespace: ns-f16a3067ca7b434aad127d15eac82503 name: zt-module-infra labels: app: zt-module-infra @@ -128,7 +128,7 @@ spec: apiVersion: v1 kind: Service metadata: - namespace: ns-d6a0e78ebd674c279614498e4c57b133 + namespace: ns-f16a3067ca7b434aad127d15eac82503 name: zt-module-infra spec: type: NodePort @@ -144,7 +144,7 @@ spec: apiVersion: apps/v1 kind: Deployment metadata: - namespace: ns-d6a0e78ebd674c279614498e4c57b133 + namespace: ns-f16a3067ca7b434aad127d15eac82503 name: zt-module-system labels: app: zt-module-system @@ -214,7 +214,7 @@ spec: apiVersion: v1 kind: Service metadata: - namespace: ns-d6a0e78ebd674c279614498e4c57b133 + namespace: ns-f16a3067ca7b434aad127d15eac82503 name: zt-module-system spec: type: NodePort @@ -230,7 +230,7 @@ spec: #apiVersion: apps/v1 #kind: Deployment #metadata: -# namespace: ns-d6a0e78ebd674c279614498e4c57b133 +# namespace: ns-f16a3067ca7b434aad127d15eac82503 # name: zt-module-bpm # labels: # app: zt-module-bpm @@ -286,7 +286,7 @@ spec: #apiVersion: v1 #kind: Service #metadata: -# namespace: ns-d6a0e78ebd674c279614498e4c57b133 +# namespace: ns-f16a3067ca7b434aad127d15eac82503 # name: zt-module-bpm #spec: # type: NodePort @@ -302,7 +302,7 @@ spec: #apiVersion: apps/v1 #kind: Deployment #metadata: -# namespace: ns-d6a0e78ebd674c279614498e4c57b133 +# namespace: ns-f16a3067ca7b434aad127d15eac82503 # name: zt-module-report # labels: # app: zt-module-report @@ -358,7 +358,7 @@ spec: #apiVersion: v1 #kind: Service #metadata: -# namespace: ns-d6a0e78ebd674c279614498e4c57b133 +# namespace: ns-f16a3067ca7b434aad127d15eac82503 # name: zt-module-report #spec: # type: NodePort @@ -374,7 +374,7 @@ spec: apiVersion: apps/v1 kind: Deployment metadata: - namespace: ns-d6a0e78ebd674c279614498e4c57b133 + namespace: ns-f16a3067ca7b434aad127d15eac82503 name: zt-module-databus labels: app: zt-module-databus @@ -444,7 +444,7 @@ spec: apiVersion: v1 kind: Service metadata: - namespace: ns-d6a0e78ebd674c279614498e4c57b133 + namespace: ns-f16a3067ca7b434aad127d15eac82503 name: zt-module-databus spec: type: NodePort @@ -462,7 +462,7 @@ spec: apiVersion: apps/v1 kind: Deployment metadata: - namespace: ns-d6a0e78ebd674c279614498e4c57b133 + namespace: ns-f16a3067ca7b434aad127d15eac82503 name: zt-module-template labels: app: zt-module-template @@ -523,7 +523,7 @@ spec: apiVersion: v1 kind: Service metadata: - namespace: ns-d6a0e78ebd674c279614498e4c57b133 + namespace: ns-f16a3067ca7b434aad127d15eac82503 name: zt-module-template spec: type: NodePort From 2c3916ebc0d5df24e3b629edc587584ba9b57eca Mon Sep 17 00:00:00 2001 From: chenbowen Date: Wed, 7 Jan 2026 13:46:33 +0800 Subject: [PATCH 2/8] =?UTF-8?q?Revert=20"1.=20=E7=BB=9F=E4=B8=80=20ZStack?= =?UTF-8?q?=20=E6=B5=8B=E8=AF=95=E7=8E=AF=E5=A2=83=E9=9B=86=E7=BE=A4"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 921baa182e47807cb0cb949999c9d9a588ff34a9. --- deployment.yaml | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/deployment.yaml b/deployment.yaml index 051c0c82..f2e31e3e 100644 --- a/deployment.yaml +++ b/deployment.yaml @@ -2,7 +2,7 @@ #apiVersion: apps/v1 #kind: Deployment #metadata: -# namespace: ns-f16a3067ca7b434aad127d15eac82503 +# namespace: ns-d6a0e78ebd674c279614498e4c57b133 # name: zt-gateway # labels: # app: zt-gateway @@ -51,7 +51,7 @@ apiVersion: v1 kind: Service metadata: - namespace: ns-f16a3067ca7b434aad127d15eac82503 + namespace: ns-d6a0e78ebd674c279614498e4c57b133 name: zt-gateway spec: type: NodePort @@ -67,7 +67,7 @@ spec: apiVersion: apps/v1 kind: Deployment metadata: - namespace: ns-f16a3067ca7b434aad127d15eac82503 + namespace: ns-d6a0e78ebd674c279614498e4c57b133 name: zt-module-infra labels: app: zt-module-infra @@ -128,7 +128,7 @@ spec: apiVersion: v1 kind: Service metadata: - namespace: ns-f16a3067ca7b434aad127d15eac82503 + namespace: ns-d6a0e78ebd674c279614498e4c57b133 name: zt-module-infra spec: type: NodePort @@ -144,7 +144,7 @@ spec: apiVersion: apps/v1 kind: Deployment metadata: - namespace: ns-f16a3067ca7b434aad127d15eac82503 + namespace: ns-d6a0e78ebd674c279614498e4c57b133 name: zt-module-system labels: app: zt-module-system @@ -214,7 +214,7 @@ spec: apiVersion: v1 kind: Service metadata: - namespace: ns-f16a3067ca7b434aad127d15eac82503 + namespace: ns-d6a0e78ebd674c279614498e4c57b133 name: zt-module-system spec: type: NodePort @@ -230,7 +230,7 @@ spec: #apiVersion: apps/v1 #kind: Deployment #metadata: -# namespace: ns-f16a3067ca7b434aad127d15eac82503 +# namespace: ns-d6a0e78ebd674c279614498e4c57b133 # name: zt-module-bpm # labels: # app: zt-module-bpm @@ -286,7 +286,7 @@ spec: #apiVersion: v1 #kind: Service #metadata: -# namespace: ns-f16a3067ca7b434aad127d15eac82503 +# namespace: ns-d6a0e78ebd674c279614498e4c57b133 # name: zt-module-bpm #spec: # type: NodePort @@ -302,7 +302,7 @@ spec: #apiVersion: apps/v1 #kind: Deployment #metadata: -# namespace: ns-f16a3067ca7b434aad127d15eac82503 +# namespace: ns-d6a0e78ebd674c279614498e4c57b133 # name: zt-module-report # labels: # app: zt-module-report @@ -358,7 +358,7 @@ spec: #apiVersion: v1 #kind: Service #metadata: -# namespace: ns-f16a3067ca7b434aad127d15eac82503 +# namespace: ns-d6a0e78ebd674c279614498e4c57b133 # name: zt-module-report #spec: # type: NodePort @@ -374,7 +374,7 @@ spec: apiVersion: apps/v1 kind: Deployment metadata: - namespace: ns-f16a3067ca7b434aad127d15eac82503 + namespace: ns-d6a0e78ebd674c279614498e4c57b133 name: zt-module-databus labels: app: zt-module-databus @@ -444,7 +444,7 @@ spec: apiVersion: v1 kind: Service metadata: - namespace: ns-f16a3067ca7b434aad127d15eac82503 + namespace: ns-d6a0e78ebd674c279614498e4c57b133 name: zt-module-databus spec: type: NodePort @@ -462,7 +462,7 @@ spec: apiVersion: apps/v1 kind: Deployment metadata: - namespace: ns-f16a3067ca7b434aad127d15eac82503 + namespace: ns-d6a0e78ebd674c279614498e4c57b133 name: zt-module-template labels: app: zt-module-template @@ -523,7 +523,7 @@ spec: apiVersion: v1 kind: Service metadata: - namespace: ns-f16a3067ca7b434aad127d15eac82503 + namespace: ns-d6a0e78ebd674c279614498e4c57b133 name: zt-module-template spec: type: NodePort From 64de518d4cf13875748c512892a5871ff4831b3a Mon Sep 17 00:00:00 2001 From: chenbowen Date: Wed, 7 Jan 2026 15:49:10 +0800 Subject: [PATCH 3/8] =?UTF-8?q?1.=E6=96=B0=E5=A2=9E=E7=AD=BE=E5=90=8D?= =?UTF-8?q?=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../framework/common/util/security/CryptoSignatureUtils.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/zt-framework/zt-common/src/main/java/com/zt/plat/framework/common/util/security/CryptoSignatureUtils.java b/zt-framework/zt-common/src/main/java/com/zt/plat/framework/common/util/security/CryptoSignatureUtils.java index b0d9be83..af7fa66a 100644 --- a/zt-framework/zt-common/src/main/java/com/zt/plat/framework/common/util/security/CryptoSignatureUtils.java +++ b/zt-framework/zt-common/src/main/java/com/zt/plat/framework/common/util/security/CryptoSignatureUtils.java @@ -2,6 +2,7 @@ package com.zt.plat.framework.common.util.security; import cn.hutool.crypto.SecureUtil; import com.zt.plat.framework.common.util.json.JsonUtils; +import lombok.extern.slf4j.Slf4j; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; @@ -15,6 +16,7 @@ import java.util.*; /** * 通用的签名、加解密工具类 */ +@Slf4j public final class CryptoSignatureUtils { public static final String ENCRYPT_TYPE_AES = "AES"; @@ -142,6 +144,7 @@ public final class CryptoSignatureUtils { return false; } String computed; + log.info("原始签名串:{}", sb); if (SIGNATURE_TYPE_MD5.equalsIgnoreCase(type)) { computed = SecureUtil.md5(sb.toString()); } else if (SIGNATURE_TYPE_SHA256.equalsIgnoreCase(type)) { @@ -149,6 +152,8 @@ public final class CryptoSignatureUtils { } else { throw new IllegalArgumentException("Unsupported signature type: " + type); } + log.info("原始签名:{}", computed); + log.info("请求签名:{}", provided); return provided.equalsIgnoreCase(computed); } From b3b691a7e3316d5009b3a36694e0203c11e87812 Mon Sep 17 00:00:00 2001 From: chenbowen Date: Wed, 7 Jan 2026 16:49:18 +0800 Subject: [PATCH 4/8] =?UTF-8?q?1.=E5=88=9D=E5=A7=8B=E5=8C=96=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E6=97=B6=E5=B9=B6=E6=B2=A1=E6=9C=89=E6=9C=89=E6=95=88?= =?UTF-8?q?=E7=9A=84=E7=94=A8=E6=88=B7=E4=BF=A1=E6=81=AF=EF=BC=8C=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E4=B8=BA=E7=A9=BA=E5=AD=97=E7=AC=A6=E4=B8=B2=E5=8D=A0?= =?UTF-8?q?=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sql/dm/ruoyi-vue-pro-dm8.sql | 4 +- sql/dm/数据总线API访问日志表结构_20251028.sql | 82 +++++++++---------- .../gateway/core/ApiGatewayAccessLogger.java | 2 + 3 files changed, 45 insertions(+), 43 deletions(-) diff --git a/sql/dm/ruoyi-vue-pro-dm8.sql b/sql/dm/ruoyi-vue-pro-dm8.sql index ba46b297..9dc55d0a 100644 --- a/sql/dm/ruoyi-vue-pro-dm8.sql +++ b/sql/dm/ruoyi-vue-pro-dm8.sql @@ -1590,8 +1590,8 @@ INSERT INTO system_menu (id, name, permission, type, sort, parent_id, path, icon INSERT INTO system_menu (id, name, permission, type, sort, parent_id, path, icon, component, component_name, status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted) VALUES (5005, 'AI 工作流测试', 'ai:workflow:test', 3, 5, 5000, '', '', '', '', 0, '1', '1', '1', '1', '2025-03-30 10:29:41', '1', '2025-03-30 10:29:41', '0'); INSERT INTO system_menu (id, name, permission, type, sort, parent_id, path, icon, component, component_name, status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted) VALUES (5009, '仪表盘设计器', '', 2, 1, 1281, 'jimu-bi', 'fa:y-combinator', 'report/jmreport/bi', 'JimuBI', 0, '1', '1', '1', '1', '2025-05-03 09:57:15', '1', '2025-05-03 10:02:05', '0'); INSERT INTO system_menu (id, name, permission, type, sort, parent_id, path, icon, component, component_name, status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted) VALUES (5010, '租户切换', 'system:tenant:visit', 3, 999, 1138, '', '', '', '', 0, '1', '1', '1', '1', '2025-05-05 15:25:32', '1', '2025-05-05 15:25:32', '0'); -INSERT INTO system_menu (id, name, permission, type, sort, parent_id, path, icon, component, component_name, status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted) VALUES (5013, '公司切换', 'system:company:visit', 3, 100, 103, '', '', '', '', 0, '1', '1', '1', '1', '2025-12-05 09:00:00', '1', '2025-12-05 09:00:00', '0'); -INSERT INTO system_menu (id, name, permission, type, sort, parent_id, path, icon, component, component_name, status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted) VALUES (5014, '部门切换', 'system:dept:visit', 3, 101, 103, '', '', '', '', 0, '1', '1', '1', '1', '2025-12-05 09:00:00', '1', '2025-12-05 09:00:00', '0'); +INSERT INTO system_menu (id, name, permission, type, sort, parent_id, path, icon, component, component_name, status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted) VALUES (5013, '公司切换', 'system:company:visit', 3, 100, 0, '', '', '', '', 0, '1', '1', '1', '1', '2025-12-05 09:00:00', '1', '2025-12-05 09:00:00', '0'); +INSERT INTO system_menu (id, name, permission, type, sort, parent_id, path, icon, component, component_name, status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted) VALUES (5014, '部门切换', 'system:dept:visit', 3, 101, 0, '', '', '', '', 0, '1', '1', '1', '1', '2025-12-05 09:00:00', '1', '2025-12-05 09:00:00', '0'); insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1953701540574969857, '系统序列号管理', '', 2, 0, 1, 'sequence', '', 'system/sequence/index', 'Sequence', 0, 1, 1, 1, '', '2025-08-08 14:38:20.455625', '', '2025-08-08 14:38:20.455626', 0); insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1953706417225150470, '系统序列号导出', 'system:sequence:export', 3, 5, 1953701540574969857, '', '', '', null, 0, 1, 1, 1, '', '2025-08-08 14:38:20.580376', '', '2025-08-08 14:38:20.580377', 0); insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1953706417225150469, '系统序列号删除', 'system:sequence:delete', 3, 4, 1953701540574969857, '', '', '', null, 0, 1, 1, 1, '', '2025-08-08 14:38:20.553819', '', '2025-08-08 14:38:20.553820', 0); diff --git a/sql/dm/数据总线API访问日志表结构_20251028.sql b/sql/dm/数据总线API访问日志表结构_20251028.sql index 8ddec75a..4ba99a2e 100644 --- a/sql/dm/数据总线API访问日志表结构_20251028.sql +++ b/sql/dm/数据总线API访问日志表结构_20251028.sql @@ -1,4 +1,4 @@ -CREATE TABLE "RUOYI-VUE-PRO"."DATABUS_API_ACCESS_LOG" +CREATE TABLE "DATABUS_API_ACCESS_LOG" ( "ID" BIGINT NOT NULL, "TRACE_ID" VARCHAR(64) DEFAULT NULL, @@ -23,52 +23,52 @@ CREATE TABLE "RUOYI-VUE-PRO"."DATABUS_API_ACCESS_LOG" "RESPONSE_TIME" DATETIME(6) DEFAULT NULL, "STEP_RESULTS" TEXT, "EXTRA" TEXT, - "CREATOR" VARCHAR(64) DEFAULT '' NOT NULL, + "CREATOR" VARCHAR(64) DEFAULT NULL, "CREATE_TIME" DATETIME(6) DEFAULT CURRENT_TIMESTAMP NOT NULL, - "UPDATER" VARCHAR(64) DEFAULT '' NOT NULL, + "UPDATER" VARCHAR(64) DEFAULT NULL, "UPDATE_TIME" DATETIME(6) DEFAULT CURRENT_TIMESTAMP NOT NULL, "DELETED" BIT DEFAULT '0' NOT NULL, "TENANT_ID" BIGINT DEFAULT 0 NOT NULL, NOT CLUSTER PRIMARY KEY("ID")) STORAGE(ON "MAIN", CLUSTERBTR) ; -COMMENT ON TABLE "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG IS 'Databus API 访问日志表'; -COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."API_CODE" IS 'API 编码'; -COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."API_VERSION" IS 'API 版本'; -COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."CLIENT_IP" IS '客户端 IP'; -COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."CREATE_TIME" IS '创建时间'; -COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."CREATOR" IS '创建者'; -COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."DELETED" IS '是否删除'; -COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."DURATION" IS '请求耗时(毫秒)'; -COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."ERROR_CODE" IS '业务错误码'; -COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."ERROR_MESSAGE" IS '错误信息'; -COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."EXCEPTION_STACK" IS '异常堆栈'; -COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."EXTRA" IS '额外调试信息(JSON 字符串)'; -COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."ID" IS '日志主键'; -COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."REQUEST_BODY" IS '请求体(JSON 字符串)'; -COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."REQUEST_HEADERS" IS '请求头(JSON 字符串)'; -COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."REQUEST_METHOD" IS '请求方法'; -COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."REQUEST_PATH" IS '请求路径'; -COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."REQUEST_QUERY" IS '请求查询参数(JSON 字符串)'; -COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."REQUEST_TIME" IS '请求时间'; -COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."RESPONSE_BODY" IS '响应体(JSON 字符串)'; -COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."RESPONSE_MESSAGE" IS '响应提示信息'; -COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."RESPONSE_STATUS" IS '响应 HTTP 状态码'; -COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."RESPONSE_TIME" IS '响应时间'; -COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."STATUS" IS '访问状态:0-成功 1-客户端错误 2-服务端错误 3-未知'; -COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."STEP_RESULTS" IS '执行步骤结果(JSON 字符串)'; -COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."TENANT_ID" IS '租户编号'; -COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."TRACE_ID" IS '追踪 ID'; -COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."UPDATER" IS '更新者'; -COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."UPDATE_TIME" IS '更新时间'; -COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."USER_AGENT" IS 'User-Agent'; +COMMENT ON TABLE DATABUS_API_ACCESS_LOG IS 'Databus API 访问日志表'; +COMMENT ON COLUMN DATABUS_API_ACCESS_LOG."API_CODE" IS 'API 编码'; +COMMENT ON COLUMN DATABUS_API_ACCESS_LOG."API_VERSION" IS 'API 版本'; +COMMENT ON COLUMN DATABUS_API_ACCESS_LOG."CLIENT_IP" IS '客户端 IP'; +COMMENT ON COLUMN DATABUS_API_ACCESS_LOG."CREATE_TIME" IS '创建时间'; +COMMENT ON COLUMN DATABUS_API_ACCESS_LOG."CREATOR" IS '创建者'; +COMMENT ON COLUMN DATABUS_API_ACCESS_LOG."DELETED" IS '是否删除'; +COMMENT ON COLUMN DATABUS_API_ACCESS_LOG."DURATION" IS '请求耗时(毫秒)'; +COMMENT ON COLUMN DATABUS_API_ACCESS_LOG."ERROR_CODE" IS '业务错误码'; +COMMENT ON COLUMN DATABUS_API_ACCESS_LOG."ERROR_MESSAGE" IS '错误信息'; +COMMENT ON COLUMN DATABUS_API_ACCESS_LOG."EXCEPTION_STACK" IS '异常堆栈'; +COMMENT ON COLUMN DATABUS_API_ACCESS_LOG."EXTRA" IS '额外调试信息(JSON 字符串)'; +COMMENT ON COLUMN DATABUS_API_ACCESS_LOG."ID" IS '日志主键'; +COMMENT ON COLUMN DATABUS_API_ACCESS_LOG."REQUEST_BODY" IS '请求体(JSON 字符串)'; +COMMENT ON COLUMN DATABUS_API_ACCESS_LOG."REQUEST_HEADERS" IS '请求头(JSON 字符串)'; +COMMENT ON COLUMN DATABUS_API_ACCESS_LOG."REQUEST_METHOD" IS '请求方法'; +COMMENT ON COLUMN DATABUS_API_ACCESS_LOG."REQUEST_PATH" IS '请求路径'; +COMMENT ON COLUMN DATABUS_API_ACCESS_LOG."REQUEST_QUERY" IS '请求查询参数(JSON 字符串)'; +COMMENT ON COLUMN DATABUS_API_ACCESS_LOG."REQUEST_TIME" IS '请求时间'; +COMMENT ON COLUMN DATABUS_API_ACCESS_LOG."RESPONSE_BODY" IS '响应体(JSON 字符串)'; +COMMENT ON COLUMN DATABUS_API_ACCESS_LOG."RESPONSE_MESSAGE" IS '响应提示信息'; +COMMENT ON COLUMN DATABUS_API_ACCESS_LOG."RESPONSE_STATUS" IS '响应 HTTP 状态码'; +COMMENT ON COLUMN DATABUS_API_ACCESS_LOG."RESPONSE_TIME" IS '响应时间'; +COMMENT ON COLUMN DATABUS_API_ACCESS_LOG."STATUS" IS '访问状态:0-成功 1-客户端错误 2-服务端错误 3-未知'; +COMMENT ON COLUMN DATABUS_API_ACCESS_LOG."STEP_RESULTS" IS '执行步骤结果(JSON 字符串)'; +COMMENT ON COLUMN DATABUS_API_ACCESS_LOG."TENANT_ID" IS '租户编号'; +COMMENT ON COLUMN DATABUS_API_ACCESS_LOG."TRACE_ID" IS '追踪 ID'; +COMMENT ON COLUMN DATABUS_API_ACCESS_LOG."UPDATER" IS '更新者'; +COMMENT ON COLUMN DATABUS_API_ACCESS_LOG."UPDATE_TIME" IS '更新时间'; +COMMENT ON COLUMN DATABUS_API_ACCESS_LOG."USER_AGENT" IS 'User-Agent'; -CREATE OR REPLACE INDEX "IDX_DATABUS_API_ACCESS_LOG_TRACE" ON "RUOYI-VUE-PRO"."DATABUS_API_ACCESS_LOG"("TRACE_ID" ASC) STORAGE(ON "MAIN", CLUSTERBTR) ; -CREATE OR REPLACE INDEX "IDX_DATABUS_API_ACCESS_LOG_CODE" ON "RUOYI-VUE-PRO"."DATABUS_API_ACCESS_LOG"("API_CODE" ASC) STORAGE(ON "MAIN", CLUSTERBTR) ; -CREATE OR REPLACE INDEX "IDX_DATABUS_API_ACCESS_LOG_METHOD" ON "RUOYI-VUE-PRO"."DATABUS_API_ACCESS_LOG"("REQUEST_METHOD" ASC) STORAGE(ON "MAIN", CLUSTERBTR) ; -CREATE OR REPLACE INDEX "IDX_DATABUS_API_ACCESS_LOG_STATUS" ON "RUOYI-VUE-PRO"."DATABUS_API_ACCESS_LOG"("STATUS" ASC) STORAGE(ON "MAIN", CLUSTERBTR) ; -CREATE OR REPLACE INDEX "IDX_DATABUS_API_ACCESS_LOG_RESP_STATUS" ON "RUOYI-VUE-PRO"."DATABUS_API_ACCESS_LOG"("RESPONSE_STATUS" ASC) STORAGE(ON "MAIN", CLUSTERBTR) ; -CREATE OR REPLACE INDEX "IDX_DATABUS_API_ACCESS_LOG_REQUEST_TIME" ON "RUOYI-VUE-PRO"."DATABUS_API_ACCESS_LOG"("REQUEST_TIME" ASC) STORAGE(ON "MAIN", CLUSTERBTR) ; -CREATE OR REPLACE INDEX "IDX_DATABUS_API_ACCESS_LOG_CLIENT_IP" ON "RUOYI-VUE-PRO"."DATABUS_API_ACCESS_LOG"("CLIENT_IP" ASC) STORAGE(ON "MAIN", CLUSTERBTR) ; -CREATE OR REPLACE INDEX "IDX_DATABUS_API_ACCESS_LOG_TENANT" ON "RUOYI-VUE-PRO"."DATABUS_API_ACCESS_LOG"("TENANT_ID" ASC) STORAGE(ON "MAIN", CLUSTERBTR) ; +CREATE OR REPLACE INDEX "IDX_DATABUS_API_ACCESS_LOG_TRACE" ON "DATABUS_API_ACCESS_LOG"("TRACE_ID" ASC) STORAGE(ON "MAIN", CLUSTERBTR) ; +CREATE OR REPLACE INDEX "IDX_DATABUS_API_ACCESS_LOG_CODE" ON "DATABUS_API_ACCESS_LOG"("API_CODE" ASC) STORAGE(ON "MAIN", CLUSTERBTR) ; +CREATE OR REPLACE INDEX "IDX_DATABUS_API_ACCESS_LOG_METHOD" ON "DATABUS_API_ACCESS_LOG"("REQUEST_METHOD" ASC) STORAGE(ON "MAIN", CLUSTERBTR) ; +CREATE OR REPLACE INDEX "IDX_DATABUS_API_ACCESS_LOG_STATUS" ON "DATABUS_API_ACCESS_LOG"("STATUS" ASC) STORAGE(ON "MAIN", CLUSTERBTR) ; +CREATE OR REPLACE INDEX "IDX_DATABUS_API_ACCESS_LOG_RESP_STATUS" ON "DATABUS_API_ACCESS_LOG"("RESPONSE_STATUS" ASC) STORAGE(ON "MAIN", CLUSTERBTR) ; +CREATE OR REPLACE INDEX "IDX_DATABUS_API_ACCESS_LOG_REQUEST_TIME" ON "DATABUS_API_ACCESS_LOG"("REQUEST_TIME" ASC) STORAGE(ON "MAIN", CLUSTERBTR) ; +CREATE OR REPLACE INDEX "IDX_DATABUS_API_ACCESS_LOG_CLIENT_IP" ON "DATABUS_API_ACCESS_LOG"("CLIENT_IP" ASC) STORAGE(ON "MAIN", CLUSTERBTR) ; +CREATE OR REPLACE INDEX "IDX_DATABUS_API_ACCESS_LOG_TENANT" ON "DATABUS_API_ACCESS_LOG"("TENANT_ID" ASC) STORAGE(ON "MAIN", CLUSTERBTR) ; diff --git a/zt-module-databus/zt-module-databus-server/src/main/java/com/zt/plat/module/databus/framework/integration/gateway/core/ApiGatewayAccessLogger.java b/zt-module-databus/zt-module-databus-server/src/main/java/com/zt/plat/module/databus/framework/integration/gateway/core/ApiGatewayAccessLogger.java index b0ed9987..741db3f2 100644 --- a/zt-module-databus/zt-module-databus-server/src/main/java/com/zt/plat/module/databus/framework/integration/gateway/core/ApiGatewayAccessLogger.java +++ b/zt-module-databus/zt-module-databus-server/src/main/java/com/zt/plat/module/databus/framework/integration/gateway/core/ApiGatewayAccessLogger.java @@ -128,6 +128,8 @@ public class ApiGatewayAccessLogger { logDO.setUserAgent(request.getHeader(HttpHeaders.USER_AGENT)); logDO.setStatus(3); logDO.setRequestTime(LocalDateTime.now()); + logDO.setCreator(""); + logDO.setUpdater(""); Long logId = apiAccessLogService.create(logDO); request.setAttribute(ATTR_LOG_ID, logId); request.setAttribute(ATTR_REQUEST_START, Instant.now()); From b2c2cca798ecdcdce334bc8bf952433529a78687 Mon Sep 17 00:00:00 2001 From: wuzongyong <13203449218@163.com> Date: Thu, 8 Jan 2026 09:16:44 +0800 Subject: [PATCH 5/8] =?UTF-8?q?feat(file):=20=E4=B8=BAS3=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=AE=A2=E6=88=B7=E7=AB=AF=E6=B7=BB=E5=8A=A0=E9=A2=84=E7=AD=BE?= =?UTF-8?q?=E5=90=8DURL=E7=BC=93=E5=AD=98=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 引入RedisTemplate依赖用于缓存预签名URL - 添加Redis缓存配置,设置缓存前缀和50分钟过期时间 - 实现预签名URL的缓存读取和存储逻辑 - 添加延迟加载RedisTemplate的方法避免循环依赖 - 在文件删除时同步清除对应的缓存项 - 优化预签名URL生成流程,优先从缓存获取 --- .../file/core/client/s3/S3FileClient.java | 56 ++++++++++++++++++- 1 file changed, 55 insertions(+), 1 deletion(-) diff --git a/zt-module-infra/zt-module-infra-server/src/main/java/com/zt/plat/module/infra/framework/file/core/client/s3/S3FileClient.java b/zt-module-infra/zt-module-infra-server/src/main/java/com/zt/plat/module/infra/framework/file/core/client/s3/S3FileClient.java index 7b716ba8..7e9fd653 100644 --- a/zt-module-infra/zt-module-infra-server/src/main/java/com/zt/plat/module/infra/framework/file/core/client/s3/S3FileClient.java +++ b/zt-module-infra/zt-module-infra-server/src/main/java/com/zt/plat/module/infra/framework/file/core/client/s3/S3FileClient.java @@ -6,6 +6,7 @@ import cn.hutool.http.HttpUtil; import com.zt.plat.framework.common.util.spring.SpringUtils; import com.zt.plat.module.infra.framework.file.core.client.AbstractFileClient; import org.apache.commons.lang3.StringUtils; +import org.springframework.data.redis.core.RedisTemplate; import software.amazon.awssdk.auth.credentials.AwsBasicCredentials; import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider; import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider; @@ -22,6 +23,7 @@ import software.amazon.awssdk.services.s3.presigner.model.PutObjectPresignReques import java.net.URI; import java.time.Duration; +import java.util.concurrent.TimeUnit; /** * 基于 S3 协议的文件客户端,实现 MinIO、阿里云、腾讯云、七牛云、华为云等云服务 @@ -32,6 +34,15 @@ public class S3FileClient extends AbstractFileClient { private static final Duration DEFAULT_PRESIGNED_EXPIRATION = Duration.ofHours(24); private static final String PRESIGN_EXPIRE_SECONDS_PROPERTY = "zt.file.download-expire-seconds"; + /** + * Redis 缓存 key 前缀:文件预签名 URL + */ + private static final String CACHE_KEY_PREFIX = "file:presigned:url:"; + /** + * Redis 缓存时间:50 分钟 + */ + private static final long CACHE_EXPIRE_MINUTES = 50L; + /** * 生成临时下载地址(预签名下载 URL) * @param path 文件路径 @@ -45,6 +56,17 @@ public class S3FileClient extends AbstractFileClient { return StringUtils.EMPTY; } + // 1. 尝试从 Redis 缓存中获取 + String cacheKey = CACHE_KEY_PREFIX + path; + RedisTemplate redis = getRedisTemplate(); + if (redis != null) { + Object cachedUrl = redis.opsForValue().get(cacheKey); + if (cachedUrl instanceof String) { + return (String) cachedUrl; + } + } + + // 2. 缓存未命中,调用 S3 生成预签名 URL // 使用 S3 官方支持的 responseCacheControl 参数,强制浏览器和代理不缓存 GetObjectRequest.Builder getObjectRequestBuilder = GetObjectRequest.builder() .bucket(config.getBucket()) @@ -54,12 +76,37 @@ public class S3FileClient extends AbstractFileClient { .signatureDuration(realExpiration) .getObjectRequest(getObjectRequestBuilder.build()) .build(); - return presigner.presignGetObject(getObjectPresignRequest).url().toString(); + String presignedUrl = presigner.presignGetObject(getObjectPresignRequest).url().toString(); + + // 3. 将生成的 URL 存入 Redis 缓存 + if (redis != null && presignedUrl != null && !presignedUrl.isEmpty()) { + redis.opsForValue().set(cacheKey, presignedUrl, CACHE_EXPIRE_MINUTES, TimeUnit.MINUTES); + } + + return presignedUrl; + } + + /** + * 获取 RedisTemplate 实例(延迟加载,避免初始化时循环依赖) + */ + @SuppressWarnings("unchecked") + private RedisTemplate getRedisTemplate() { + if (redisTemplate == null) { + try { + redisTemplate = SpringUtils.getBean("redisTemplate", RedisTemplate.class); + } catch (Exception e) { + // Redis 不可用时,不影响正常功能,只是不使用缓存 + return null; + } + } + return redisTemplate; } private S3Client client; private S3Presigner presigner; + private RedisTemplate redisTemplate; + public S3FileClient(Long id, S3FileClientConfig config) { super(id, config); } @@ -115,6 +162,13 @@ public class S3FileClient extends AbstractFileClient { .key(path) .build(); client.deleteObject(deleteRequest); + + // 删除文件后,清除对应的缓存 + String cacheKey = CACHE_KEY_PREFIX + path; + RedisTemplate redis = getRedisTemplate(); + if (redis != null) { + redis.delete(cacheKey); + } } @Override From 2b6f4df3262ee53e7130adc2dbb8876112a1800c Mon Sep 17 00:00:00 2001 From: wuzongyong <13203449218@163.com> Date: Thu, 8 Jan 2026 09:16:44 +0800 Subject: [PATCH 6/8] =?UTF-8?q?feat(file):=20=E4=B8=BAS3=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=AE=A2=E6=88=B7=E7=AB=AF=E6=B7=BB=E5=8A=A0=E9=A2=84=E7=AD=BE?= =?UTF-8?q?=E5=90=8DURL=E7=BC=93=E5=AD=98=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 引入RedisTemplate依赖用于缓存预签名URL - 添加Redis缓存配置,设置缓存前缀和50分钟过期时间 - 实现预签名URL的缓存读取和存储逻辑 - 添加延迟加载RedisTemplate的方法避免循环依赖 - 在文件删除时同步清除对应的缓存项 - 优化预签名URL生成流程,优先从缓存获取 --- .../file/core/client/s3/S3FileClient.java | 56 ++++++++++++++++++- 1 file changed, 55 insertions(+), 1 deletion(-) diff --git a/zt-module-infra/zt-module-infra-server/src/main/java/com/zt/plat/module/infra/framework/file/core/client/s3/S3FileClient.java b/zt-module-infra/zt-module-infra-server/src/main/java/com/zt/plat/module/infra/framework/file/core/client/s3/S3FileClient.java index 7b716ba8..7e9fd653 100644 --- a/zt-module-infra/zt-module-infra-server/src/main/java/com/zt/plat/module/infra/framework/file/core/client/s3/S3FileClient.java +++ b/zt-module-infra/zt-module-infra-server/src/main/java/com/zt/plat/module/infra/framework/file/core/client/s3/S3FileClient.java @@ -6,6 +6,7 @@ import cn.hutool.http.HttpUtil; import com.zt.plat.framework.common.util.spring.SpringUtils; import com.zt.plat.module.infra.framework.file.core.client.AbstractFileClient; import org.apache.commons.lang3.StringUtils; +import org.springframework.data.redis.core.RedisTemplate; import software.amazon.awssdk.auth.credentials.AwsBasicCredentials; import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider; import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider; @@ -22,6 +23,7 @@ import software.amazon.awssdk.services.s3.presigner.model.PutObjectPresignReques import java.net.URI; import java.time.Duration; +import java.util.concurrent.TimeUnit; /** * 基于 S3 协议的文件客户端,实现 MinIO、阿里云、腾讯云、七牛云、华为云等云服务 @@ -32,6 +34,15 @@ public class S3FileClient extends AbstractFileClient { private static final Duration DEFAULT_PRESIGNED_EXPIRATION = Duration.ofHours(24); private static final String PRESIGN_EXPIRE_SECONDS_PROPERTY = "zt.file.download-expire-seconds"; + /** + * Redis 缓存 key 前缀:文件预签名 URL + */ + private static final String CACHE_KEY_PREFIX = "file:presigned:url:"; + /** + * Redis 缓存时间:50 分钟 + */ + private static final long CACHE_EXPIRE_MINUTES = 50L; + /** * 生成临时下载地址(预签名下载 URL) * @param path 文件路径 @@ -45,6 +56,17 @@ public class S3FileClient extends AbstractFileClient { return StringUtils.EMPTY; } + // 1. 尝试从 Redis 缓存中获取 + String cacheKey = CACHE_KEY_PREFIX + path; + RedisTemplate redis = getRedisTemplate(); + if (redis != null) { + Object cachedUrl = redis.opsForValue().get(cacheKey); + if (cachedUrl instanceof String) { + return (String) cachedUrl; + } + } + + // 2. 缓存未命中,调用 S3 生成预签名 URL // 使用 S3 官方支持的 responseCacheControl 参数,强制浏览器和代理不缓存 GetObjectRequest.Builder getObjectRequestBuilder = GetObjectRequest.builder() .bucket(config.getBucket()) @@ -54,12 +76,37 @@ public class S3FileClient extends AbstractFileClient { .signatureDuration(realExpiration) .getObjectRequest(getObjectRequestBuilder.build()) .build(); - return presigner.presignGetObject(getObjectPresignRequest).url().toString(); + String presignedUrl = presigner.presignGetObject(getObjectPresignRequest).url().toString(); + + // 3. 将生成的 URL 存入 Redis 缓存 + if (redis != null && presignedUrl != null && !presignedUrl.isEmpty()) { + redis.opsForValue().set(cacheKey, presignedUrl, CACHE_EXPIRE_MINUTES, TimeUnit.MINUTES); + } + + return presignedUrl; + } + + /** + * 获取 RedisTemplate 实例(延迟加载,避免初始化时循环依赖) + */ + @SuppressWarnings("unchecked") + private RedisTemplate getRedisTemplate() { + if (redisTemplate == null) { + try { + redisTemplate = SpringUtils.getBean("redisTemplate", RedisTemplate.class); + } catch (Exception e) { + // Redis 不可用时,不影响正常功能,只是不使用缓存 + return null; + } + } + return redisTemplate; } private S3Client client; private S3Presigner presigner; + private RedisTemplate redisTemplate; + public S3FileClient(Long id, S3FileClientConfig config) { super(id, config); } @@ -115,6 +162,13 @@ public class S3FileClient extends AbstractFileClient { .key(path) .build(); client.deleteObject(deleteRequest); + + // 删除文件后,清除对应的缓存 + String cacheKey = CACHE_KEY_PREFIX + path; + RedisTemplate redis = getRedisTemplate(); + if (redis != null) { + redis.delete(cacheKey); + } } @Override From 2d2b62ed9fdfedc78dceecc96f9de4bcd2f0a1ed Mon Sep 17 00:00:00 2001 From: wuzongyong <13203449218@163.com> Date: Thu, 8 Jan 2026 09:49:34 +0800 Subject: [PATCH 7/8] =?UTF-8?q?Revert=20"feat(file):=20=E4=B8=BAS3?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=AE=A2=E6=88=B7=E7=AB=AF=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E9=A2=84=E7=AD=BE=E5=90=8DURL=E7=BC=93=E5=AD=98=E5=8A=9F?= =?UTF-8?q?=E8=83=BD"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 2b6f4df3262ee53e7130adc2dbb8876112a1800c. --- .../file/core/client/s3/S3FileClient.java | 56 +------------------ 1 file changed, 1 insertion(+), 55 deletions(-) diff --git a/zt-module-infra/zt-module-infra-server/src/main/java/com/zt/plat/module/infra/framework/file/core/client/s3/S3FileClient.java b/zt-module-infra/zt-module-infra-server/src/main/java/com/zt/plat/module/infra/framework/file/core/client/s3/S3FileClient.java index 7e9fd653..7b716ba8 100644 --- a/zt-module-infra/zt-module-infra-server/src/main/java/com/zt/plat/module/infra/framework/file/core/client/s3/S3FileClient.java +++ b/zt-module-infra/zt-module-infra-server/src/main/java/com/zt/plat/module/infra/framework/file/core/client/s3/S3FileClient.java @@ -6,7 +6,6 @@ import cn.hutool.http.HttpUtil; import com.zt.plat.framework.common.util.spring.SpringUtils; import com.zt.plat.module.infra.framework.file.core.client.AbstractFileClient; import org.apache.commons.lang3.StringUtils; -import org.springframework.data.redis.core.RedisTemplate; import software.amazon.awssdk.auth.credentials.AwsBasicCredentials; import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider; import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider; @@ -23,7 +22,6 @@ import software.amazon.awssdk.services.s3.presigner.model.PutObjectPresignReques import java.net.URI; import java.time.Duration; -import java.util.concurrent.TimeUnit; /** * 基于 S3 协议的文件客户端,实现 MinIO、阿里云、腾讯云、七牛云、华为云等云服务 @@ -34,15 +32,6 @@ public class S3FileClient extends AbstractFileClient { private static final Duration DEFAULT_PRESIGNED_EXPIRATION = Duration.ofHours(24); private static final String PRESIGN_EXPIRE_SECONDS_PROPERTY = "zt.file.download-expire-seconds"; - /** - * Redis 缓存 key 前缀:文件预签名 URL - */ - private static final String CACHE_KEY_PREFIX = "file:presigned:url:"; - /** - * Redis 缓存时间:50 分钟 - */ - private static final long CACHE_EXPIRE_MINUTES = 50L; - /** * 生成临时下载地址(预签名下载 URL) * @param path 文件路径 @@ -56,17 +45,6 @@ public class S3FileClient extends AbstractFileClient { return StringUtils.EMPTY; } - // 1. 尝试从 Redis 缓存中获取 - String cacheKey = CACHE_KEY_PREFIX + path; - RedisTemplate redis = getRedisTemplate(); - if (redis != null) { - Object cachedUrl = redis.opsForValue().get(cacheKey); - if (cachedUrl instanceof String) { - return (String) cachedUrl; - } - } - - // 2. 缓存未命中,调用 S3 生成预签名 URL // 使用 S3 官方支持的 responseCacheControl 参数,强制浏览器和代理不缓存 GetObjectRequest.Builder getObjectRequestBuilder = GetObjectRequest.builder() .bucket(config.getBucket()) @@ -76,37 +54,12 @@ public class S3FileClient extends AbstractFileClient { .signatureDuration(realExpiration) .getObjectRequest(getObjectRequestBuilder.build()) .build(); - String presignedUrl = presigner.presignGetObject(getObjectPresignRequest).url().toString(); - - // 3. 将生成的 URL 存入 Redis 缓存 - if (redis != null && presignedUrl != null && !presignedUrl.isEmpty()) { - redis.opsForValue().set(cacheKey, presignedUrl, CACHE_EXPIRE_MINUTES, TimeUnit.MINUTES); - } - - return presignedUrl; - } - - /** - * 获取 RedisTemplate 实例(延迟加载,避免初始化时循环依赖) - */ - @SuppressWarnings("unchecked") - private RedisTemplate getRedisTemplate() { - if (redisTemplate == null) { - try { - redisTemplate = SpringUtils.getBean("redisTemplate", RedisTemplate.class); - } catch (Exception e) { - // Redis 不可用时,不影响正常功能,只是不使用缓存 - return null; - } - } - return redisTemplate; + return presigner.presignGetObject(getObjectPresignRequest).url().toString(); } private S3Client client; private S3Presigner presigner; - private RedisTemplate redisTemplate; - public S3FileClient(Long id, S3FileClientConfig config) { super(id, config); } @@ -162,13 +115,6 @@ public class S3FileClient extends AbstractFileClient { .key(path) .build(); client.deleteObject(deleteRequest); - - // 删除文件后,清除对应的缓存 - String cacheKey = CACHE_KEY_PREFIX + path; - RedisTemplate redis = getRedisTemplate(); - if (redis != null) { - redis.delete(cacheKey); - } } @Override From 273752df54a8ace3a0a60a6f511ab927c9904c09 Mon Sep 17 00:00:00 2001 From: chenbowen Date: Fri, 9 Jan 2026 08:47:19 +0800 Subject: [PATCH 8/8] =?UTF-8?q?1.=20=E8=B0=83=E6=95=B4=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=E7=9A=84=20databus=20=E9=83=A8=E7=BD=B2?= =?UTF-8?q?=E7=AB=AF=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deployment.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/deployment.yaml b/deployment.yaml index f2e31e3e..4fc70456 100644 --- a/deployment.yaml +++ b/deployment.yaml @@ -416,14 +416,14 @@ spec: readinessProbe: httpGet: path: /actuator/health - port: 48100 + port: 48108 initialDelaySeconds: 50 periodSeconds: 5 failureThreshold: 3 livenessProbe: httpGet: path: /actuator/health - port: 48100 + port: 48108 initialDelaySeconds: 50 periodSeconds: 10 failureThreshold: 5 @@ -452,8 +452,8 @@ spec: app: zt-module-databus ports: - protocol: TCP - port: 48100 - targetPort: 48100 + port: 48108 + targetPort: 48108 nodePort: 30090