Compare commits
63 Commits
d8b2c4d7b1
...
e5d9036dfa
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e5d9036dfa | ||
|
|
6dd44ea02d | ||
|
|
1fa7416905 | ||
|
|
b96d40b8d1 | ||
|
|
c86a765b73 | ||
|
|
870c6a5f88 | ||
|
|
660e0cf401 | ||
|
|
9bc519aa0d | ||
|
|
4082e61874 | ||
|
|
f40ae1aa74 | ||
|
|
878dfde572 | ||
|
|
1303ac250e | ||
|
|
bfee58e0d7 | ||
|
|
a4924bd718 | ||
|
|
d81413e239 | ||
|
|
e6a0eef084 | ||
|
|
0b8e200aa1 | ||
|
|
738c82b000 | ||
|
|
ccdf3d28ff | ||
|
|
498e0b864a | ||
|
|
2d5b71896e | ||
|
|
12157d5dcb | ||
|
|
7e25d6d106 | ||
|
|
13403ea027 | ||
|
|
fcc32fa2d8 | ||
|
|
72fe903447 | ||
|
|
8782631eaa | ||
|
|
a57d05ccd6 | ||
|
|
3828884a8b | ||
|
|
218c6aa3dc | ||
|
|
aef2bf6e1d | ||
|
|
afc8c0f23c | ||
|
|
b6f5649b97 | ||
|
|
59ddd41590 | ||
|
|
ba1bc1fb6f | ||
|
|
d62d06a45e | ||
|
|
df3e80d907 | ||
|
|
69d3dbc61f | ||
|
|
fffea61d51 | ||
|
|
b7ec17694d | ||
|
|
6fc1dface2 | ||
|
|
b8406a907b | ||
|
|
951b9bf67d | ||
|
|
2323ee5c3b | ||
|
|
27bf25fdb0 | ||
|
|
8254bb4536 | ||
|
|
8d25f4224b | ||
|
|
ec12664688 | ||
|
|
5ad6886880 | ||
|
|
b0838b6ae0 | ||
|
|
4d963f0f0c | ||
|
|
ca82c9def3 | ||
|
|
ce7b18997b | ||
|
|
4fc05fc094 | ||
|
|
1991863573 | ||
|
|
1706a70499 | ||
|
|
cae0b9e4af | ||
|
|
0f10bd2289 | ||
|
|
3609cb2e18 | ||
|
|
99645c5ac8 | ||
|
|
39a82b6537 | ||
|
|
577df1c6e7 | ||
|
|
29e0c7da14 |
@@ -85,6 +85,11 @@ spec:
|
||||
labels:
|
||||
app: zt-module-infra
|
||||
spec:
|
||||
dnsPolicy: None
|
||||
dnsConfig:
|
||||
nameservers:
|
||||
- "172.16.36.16"
|
||||
- "172.16.36.220"
|
||||
containers:
|
||||
- name: zt-module-infra
|
||||
image: 172.16.46.66:10043/zt/zt-module-infra:VERSION_PLACEHOLDER
|
||||
@@ -157,6 +162,20 @@ spec:
|
||||
labels:
|
||||
app: zt-module-system
|
||||
spec:
|
||||
affinity:
|
||||
nodeAffinity:
|
||||
requiredDuringSchedulingIgnoredDuringExecution:
|
||||
nodeSelectorTerms:
|
||||
- matchExpressions:
|
||||
- key: kubernetes.io/hostname
|
||||
operator: In
|
||||
values:
|
||||
- node-3
|
||||
dnsPolicy: None
|
||||
dnsConfig:
|
||||
nameservers:
|
||||
- "172.16.36.16"
|
||||
- "172.16.36.220"
|
||||
containers:
|
||||
- name: zt-module-system
|
||||
image: 172.16.46.66:10043/zt/zt-module-system:VERSION_PLACEHOLDER
|
||||
@@ -373,6 +392,20 @@ spec:
|
||||
labels:
|
||||
app: zt-module-databus
|
||||
spec:
|
||||
affinity:
|
||||
nodeAffinity:
|
||||
requiredDuringSchedulingIgnoredDuringExecution:
|
||||
nodeSelectorTerms:
|
||||
- matchExpressions:
|
||||
- key: kubernetes.io/hostname
|
||||
operator: In
|
||||
values:
|
||||
- node-3
|
||||
dnsPolicy: None
|
||||
dnsConfig:
|
||||
nameservers:
|
||||
- "172.16.36.16"
|
||||
- "172.16.36.220"
|
||||
containers:
|
||||
- name: zt-module-databus
|
||||
image: 172.16.46.66:10043/zt/zt-module-databus:VERSION_PLACEHOLDER
|
||||
@@ -447,6 +480,11 @@ spec:
|
||||
labels:
|
||||
app: zt-module-template
|
||||
spec:
|
||||
dnsPolicy: None
|
||||
dnsConfig:
|
||||
nameservers:
|
||||
- "172.16.36.16"
|
||||
- "172.16.36.220"
|
||||
containers:
|
||||
- name: zt-module-template
|
||||
image: 172.16.46.66:10043/zt/zt-module-template:VERSION_PLACEHOLDER
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
- **核心特性**:
|
||||
1. API 全生命周期管理(定义、版本、回滚、发布缓存刷新)。
|
||||
2. 编排引擎基于 Spring Integration 动态装配,支持 Start/HTTP/RPC/Script/End 步骤及 JSON 变换链路。
|
||||
3. 多重安全防护:IP 白/黑名单、应用凭证、时间戳 + 随机串、报文加解密、签名、防重放、租户隔离、匿名固定用户等。
|
||||
4. QoS 能力:可插拔限流策略(Redis 固定窗口计数)、审计日志、追踪 ID & Step 级结果入库。
|
||||
3. 多重安全防护:**精确 IP 白/黑名单(仅支持单 IP,不支持 CIDR 段)**、应用凭证、时间戳 + 随机串、报文加解密、签名、防重放、租户隔离、匿名固定用户等。
|
||||
4. QoS 能力:可插拔限流策略(Redis 固定窗口计数)、访问日志、追踪 ID & Step 级结果入库。
|
||||
5. Debug 支持:管理端 `POST /databus/gateway/invoke` 可注入任意参数模拟真实调用。
|
||||
|
||||
## 2. 运行时架构概览
|
||||
@@ -86,16 +86,17 @@
|
||||
|
||||
## 7. 配置项(`application.yml`)重点
|
||||
|
||||
> 说明:下表均有默认值,除非特别标注“必填”,其余可按需覆盖或直接使用默认。未配置 `allowed-ips` 表示放行所有来源;如开启多租户透传才需设置 `tenant-header`。
|
||||
|
||||
```yaml
|
||||
databus:
|
||||
api-portal:
|
||||
base-path: /admin-api/databus/api/portal
|
||||
allowed-ips: [10.0.0.0/24] # 可为空表示全放行
|
||||
# 仅支持精确 IP;留空表示全放行。示例:允许两个固定出口 IP
|
||||
allowed-ips: [10.0.0.12, 10.0.0.13]
|
||||
denied-ips: []
|
||||
enable-tenant-header: true
|
||||
tenant-header: ZT-Tenant-Id
|
||||
enable-audit: true
|
||||
enable-rate-limit: true
|
||||
tenant-header: ZT-Tenant-Id # 仅当 enable-tenant-header=true 时才需要配置
|
||||
security:
|
||||
enabled: true
|
||||
signature-type: MD5 # 或 SHA256
|
||||
@@ -109,6 +110,12 @@ databus:
|
||||
connection-pool-enabled: true # 默认启用 Reactor Netty 连接池,可在排查连接复用/长连接异常时设为 false
|
||||
```
|
||||
|
||||
### 必填/必选提示
|
||||
|
||||
- 无需在 yml 中显式写入必填项;若需要启用租户透传,请同步配置 `tenant-header`。
|
||||
- 安全校验依赖“客户端凭证”里的 `encryptionKey/encryptionType/signatureType`;当 `require-body-encryption=true` 且凭证缺少密钥时,调用会失败(HTTP 500 `应用未配置加密密钥`)。
|
||||
- 限流能力取决于 API 绑定的策略;未绑定即不做限流。`connection-pool-enabled` 仅用于排障,可保持默认。
|
||||
|
||||
> `GatewaySecurityFilter` 会自动注册到最高优先级 +10,确保该路径的请求先经过安全校验。
|
||||
|
||||
关闭连接池后,每次 HTTP Step 请求都会新建 TCP 连接,适合短期定位“连接被复用导致 Reset/超时”的场景,但会带来额外的握手开销;切换时可关注启动日志中的 `Databus gateway WebClient pooling` 提示。
|
||||
@@ -133,7 +140,7 @@ databus:
|
||||
| 1 | 生成时间戳 | `timestamp = System.currentTimeMillis()`,与服务器时间差 ≤ 300s。 |
|
||||
| 2 | 生成随机串 | `nonce` 长度≥8,可使用 `UUID.randomUUID().toString().replace("-", "")`。 |
|
||||
| 3 | 准备明文 Body | 例如 `{"orderNo":"SO20251120001"}`,记为 `plainBody`。 |
|
||||
| 4 | 计算签名 | 将所有签名字段放入 Map(详见下节),调用 `CryptoSignatureUtils.verifySignature` 同样的规则:对 key 排序、跳过 `signature` 字段、使用 `&` 连接 `key=value`,再用 `MD5/SHA256` 计算;结果赋值给 `ZT-Signature`。*注意:签名使用明文 body。* |
|
||||
| 4 | 计算签名 | 使用**明文**请求数据构造签名载荷:Query 参数 + JSON Body 字段(若 Body 非 JSON 则整体放入 `body` 字段)+ `ZT-App-Id` + `ZT-Timestamp` + `ZT-Nonce`,按字典序拼接 `key=value` 以 `&` 连接,使用 `MD5/SHA256` 计算;结果写入 `ZT-Signature`。 |
|
||||
| 5 | 加密请求体 | 使用凭证的 `encryptionKey + encryptionType` 对 `plainBody` 进行对称加密,Base64 结果作为 HTTP Body;Content-Type 可设 `text/plain` 或 `application/json`。 |
|
||||
| 6 | 组装请求头 | `ZT-App-Id`, `ZT-Timestamp`, `ZT-Nonce`, `ZT-Signature`, `ZT-Tenant-Id`(可选), `X-Client-Id`(建议,与限流相关),如有自带 JWT 则设置 `Authorization`。 |
|
||||
| 7 | 发送请求 | URL = `https://{host}{basePath}/{apiCode}/{version}`,方法与 API 定义保持一致。 |
|
||||
@@ -141,14 +148,14 @@ databus:
|
||||
#### 签名字段示例
|
||||
|
||||
```text
|
||||
appId=demo-app
|
||||
&body={"orderNo":"SO20251120001"}
|
||||
&nonce=0c5e2df9a1
|
||||
×tamp=1732070400000
|
||||
ZT-App-Id=demo-app
|
||||
&ZT-Nonce=0c5e2df9a1
|
||||
&ZT-Timestamp=1732070400000
|
||||
&orderNo=SO20251120001
|
||||
```
|
||||
|
||||
- Query 参数将被拼接为 `key=value`(多值以逗号连接),自动忽略 `signature` 字段。
|
||||
- Request Body 若非 JSON,则退化为字符串整体签名。
|
||||
- Body 为 JSON 时会按字段展开参与签名;仅在非 JSON 场景下才使用整体报文字符串作为 `body` 字段参与签名。
|
||||
|
||||
#### cURL 示例
|
||||
|
||||
@@ -183,18 +190,17 @@ curl -X POST "https://gw.example.com/admin-api/databus/api/portal/order.create/v
|
||||
|
||||
## 9. 限流策略配置
|
||||
|
||||
- 存储在 `ApiPolicyRateLimitDO.config`,JSON 结构示例:
|
||||
- 存储在 `ApiPolicyRateLimitDO.config`,仅支持字段:
|
||||
|
||||
```json
|
||||
{
|
||||
"limit": 1000,
|
||||
"windowSeconds": 60,
|
||||
"keyTemplate": "${apiCode}:${tenantId}:${header.X-Client-Id}" // 预留扩展
|
||||
"windowSeconds": 60
|
||||
}
|
||||
```
|
||||
|
||||
- 当前默认实现读取 `limit`(默认 100)与 `windowSeconds`(默认 60)。
|
||||
- Redis Key 格式:`databus:api:rl:{apiCode}:{version}:{X-Client-Id}`,当计数首次出现时自动设置过期。
|
||||
- 当前实现只读取上述两个字段;Key 模板不可配置。
|
||||
- Redis Key 固定为:`databus:api:rl:{apiCode}:{version}:{X-Client-Id}`,`X-Client-Id` 缺省时使用 `anonymous`,计数首次出现会自动设置过期。
|
||||
- 限流拦截后会抛出 `API_RATE_LIMIT_EXCEEDED`,在访问日志中标记 `status=1/2`。
|
||||
|
||||
## 10. 访问日志字段对照
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
45
sql/dm/数据总线API凭证绑定与访问日志补充_20251209.sql
Normal file
45
sql/dm/数据总线API凭证绑定与访问日志补充_20251209.sql
Normal file
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
* Databus API 凭证绑定与访问日志补充字段(DM8)
|
||||
* Generated on 2025-12-09
|
||||
*/
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for databus_api_definition_credential
|
||||
-- ----------------------------
|
||||
CREATE TABLE databus_api_definition_credential (
|
||||
id BIGINT NOT NULL PRIMARY KEY,
|
||||
tenant_id BIGINT NOT NULL DEFAULT 0,
|
||||
api_id BIGINT NOT NULL,
|
||||
credential_id BIGINT NOT NULL,
|
||||
app_id VARCHAR(128),
|
||||
creator VARCHAR(64) DEFAULT '' NOT NULL,
|
||||
create_time DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
||||
updater VARCHAR(64) DEFAULT '' NOT NULL,
|
||||
update_time DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
||||
deleted BIT DEFAULT '0' NOT NULL
|
||||
);
|
||||
|
||||
CREATE UNIQUE INDEX uk_databus_api_definition_credential ON databus_api_definition_credential (api_id, credential_id, deleted);
|
||||
CREATE INDEX idx_databus_api_definition_credential_api ON databus_api_definition_credential (api_id);
|
||||
CREATE INDEX idx_databus_api_definition_credential_cred ON databus_api_definition_credential (credential_id);
|
||||
|
||||
COMMENT ON TABLE databus_api_definition_credential IS 'Databus API 凭证绑定表';
|
||||
COMMENT ON COLUMN databus_api_definition_credential.id IS '主键 ID';
|
||||
COMMENT ON COLUMN databus_api_definition_credential.tenant_id IS '租户编号';
|
||||
COMMENT ON COLUMN databus_api_definition_credential.api_id IS 'API 定义 ID';
|
||||
COMMENT ON COLUMN databus_api_definition_credential.credential_id IS '凭证 ID';
|
||||
COMMENT ON COLUMN databus_api_definition_credential.app_id IS '凭证应用标识冗余';
|
||||
COMMENT ON COLUMN databus_api_definition_credential.creator IS '创建者';
|
||||
COMMENT ON COLUMN databus_api_definition_credential.create_time IS '创建时间';
|
||||
COMMENT ON COLUMN databus_api_definition_credential.updater IS '更新者';
|
||||
COMMENT ON COLUMN databus_api_definition_credential.update_time IS '更新时间';
|
||||
COMMENT ON COLUMN databus_api_definition_credential.deleted IS '逻辑删除标记';
|
||||
|
||||
-- ----------------------------
|
||||
-- Alter databus_api_access_log add credential columns
|
||||
-- ----------------------------
|
||||
ALTER TABLE databus_api_access_log ADD credential_app_id VARCHAR(128);
|
||||
COMMENT ON COLUMN databus_api_access_log.credential_app_id IS '调用凭证应用标识';
|
||||
|
||||
ALTER TABLE databus_api_access_log ADD credential_id BIGINT;
|
||||
COMMENT ON COLUMN databus_api_access_log.credential_id IS '调用凭证 ID';
|
||||
9
sql/dm/短信渠道鸿联九五支持_DM8_20251210.sql
Normal file
9
sql/dm/短信渠道鸿联九五支持_DM8_20251210.sql
Normal file
@@ -0,0 +1,9 @@
|
||||
-- 短信渠道新增鸿联九五支持(达梦8)
|
||||
-- 1) system_sms_channel 表新增 epid 字段
|
||||
-- 2) system_sms_channel_code 字典新增 HL95 选项
|
||||
|
||||
ALTER TABLE system_sms_channel ADD COLUMN epid VARCHAR(64);
|
||||
COMMENT ON COLUMN system_sms_channel.epid IS '企业编号(epid)';
|
||||
|
||||
INSERT INTO system_dict_data (id, sort, label, value, dict_type, status, color_type, css_class, remark, creator, create_time, updater, update_time, deleted)
|
||||
VALUES (1592, 5, '鸿联九五', 'HL95', 'system_sms_channel_code', 0, '', '', '', '1', '2025-12-10 00:00:00', '1', '2025-12-10 00:00:00', '0');
|
||||
25
sql/mysql/databus_api_credential_20250512.sql
Normal file
25
sql/mysql/databus_api_credential_20250512.sql
Normal file
@@ -0,0 +1,25 @@
|
||||
-- Databus API 凭证绑定 & 访问日志补充字段
|
||||
|
||||
-- API 与客户凭证绑定表
|
||||
CREATE TABLE IF NOT EXISTS `databus_api_definition_credential` (
|
||||
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||
`api_id` bigint NOT NULL COMMENT 'API 定义 ID',
|
||||
`credential_id` bigint NOT NULL COMMENT '凭证 ID',
|
||||
`app_id` varchar(128) DEFAULT NULL COMMENT '凭证应用标识冗余',
|
||||
`tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
|
||||
`creator` varchar(64) DEFAULT '' COMMENT '创建者',
|
||||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`updater` varchar(64) DEFAULT '' COMMENT '更新者',
|
||||
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_api_credential` (`api_id`, `credential_id`, `deleted`),
|
||||
KEY `idx_api_id` (`api_id`),
|
||||
KEY `idx_credential_id` (`credential_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Databus API 凭证绑定表';
|
||||
|
||||
-- 访问日志补充凭证信息
|
||||
ALTER TABLE `databus_api_access_log`
|
||||
ADD COLUMN IF NOT EXISTS `credential_app_id` varchar(128) NULL COMMENT '调用凭证应用标识' AFTER `api_version`;
|
||||
ALTER TABLE `databus_api_access_log`
|
||||
ADD COLUMN IF NOT EXISTS `credential_id` bigint NULL COMMENT '调用凭证 ID' AFTER `credential_app_id`;
|
||||
@@ -871,6 +871,7 @@ INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `st
|
||||
INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1589, 10, 'BPMN 设计器', '10', 'bpm_model_type', 0, 'primary', '', '', '1', '2024-08-26 15:22:17', '1', '2024-08-26 16:46:02', b'0');
|
||||
INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1590, 20, 'SIMPLE 设计器', '20', 'bpm_model_type', 0, 'success', '', '', '1', '2024-08-26 15:22:27', '1', '2024-08-26 16:45:58', b'0');
|
||||
INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1591, 4, '七牛云', 'QINIU', 'system_sms_channel_code', 0, '', '', '', '1', '2024-08-31 08:45:03', '1', '2024-08-31 08:45:24', b'0');
|
||||
INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1592, 5, '鸿联九五', 'HL95', 'system_sms_channel_code', 0, '', '', '', '1', '2025-12-10 00:00:00', '1', '2025-12-10 00:00:00', b'0');
|
||||
INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1592, 3, '新人券', '3', 'promotion_coupon_take_type', 0, 'info', '', '新人注册后,自动发放', '1', '2024-09-03 11:57:16', '1', '2024-09-03 11:57:28', b'0');
|
||||
INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1593, 5, '微信零钱', '5', 'brokerage_withdraw_type', 0, '', '', 'API 打款', '1', '2024-10-13 11:06:48', '1', '2025-05-10 08:24:55', b'0');
|
||||
INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1683, 10, '字节豆包', 'DouBao', 'ai_platform', 0, '', '', '', '1', '2025-02-23 19:51:40', '1', '2025-02-23 19:52:02', b'0');
|
||||
@@ -3509,6 +3510,7 @@ DROP TABLE IF EXISTS `system_sms_channel`;
|
||||
CREATE TABLE `system_sms_channel` (
|
||||
`id` bigint NOT NULL COMMENT '编号',
|
||||
`signature` varchar(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '短信签名',
|
||||
`epid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '企业编号(epid)',
|
||||
`code` varchar(63) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '渠道编码',
|
||||
`status` tinyint NOT NULL COMMENT '开启状态',
|
||||
`remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '备注',
|
||||
@@ -3527,9 +3529,9 @@ CREATE TABLE `system_sms_channel` (
|
||||
-- Records of system_sms_channel
|
||||
-- ----------------------------
|
||||
BEGIN;
|
||||
INSERT INTO `system_sms_channel` (`id`, `signature`, `code`, `status`, `remark`, `api_key`, `api_secret`, `callback_url`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2, 'Ballcat', 'ALIYUN', 0, '你要改哦,只有我可以用!!!!', 'LTAI5tCnKso2uG3kJ5gRav88', 'fGJ5SNXL7P1NHNRmJ7DJaMJGPyE55C', NULL, '', '2021-03-31 11:53:10', '1', '2024-08-04 08:53:26', b'0');
|
||||
INSERT INTO `system_sms_channel` (`id`, `signature`, `code`, `status`, `remark`, `api_key`, `api_secret`, `callback_url`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (4, '测试渠道', 'DEBUG_DING_TALK', 0, '123', '696b5d8ead48071237e4aa5861ff08dbadb2b4ded1c688a7b7c9afc615579859', 'SEC5c4e5ff888bc8a9923ae47f59e7ccd30af1f14d93c55b4e2c9cb094e35aeed67', NULL, '1', '2021-04-13 00:23:14', '1', '2022-03-27 20:29:49', b'0');
|
||||
INSERT INTO `system_sms_channel` (`id`, `signature`, `code`, `status`, `remark`, `api_key`, `api_secret`, `callback_url`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (7, 'mock腾讯云', 'TENCENT', 0, '', '1 2', '2 3', '', '1', '2024-09-30 08:53:45', '1', '2024-09-30 08:55:01', b'0');
|
||||
INSERT INTO `system_sms_channel` (`id`, `signature`, `epid`, `code`, `status`, `remark`, `api_key`, `api_secret`, `callback_url`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2, 'Ballcat', NULL, 'ALIYUN', 0, '你要改哦,只有我可以用!!!!', 'LTAI5tCnKso2uG3kJ5gRav88', 'fGJ5SNXL7P1NHNRmJ7DJaMJGPyE55C', NULL, '', '2021-03-31 11:53:10', '1', '2024-08-04 08:53:26', b'0');
|
||||
INSERT INTO `system_sms_channel` (`id`, `signature`, `epid`, `code`, `status`, `remark`, `api_key`, `api_secret`, `callback_url`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (4, '测试渠道', NULL, 'DEBUG_DING_TALK', 0, '123', '696b5d8ead48071237e4aa5861ff08dbadb2b4ded1c688a7b7c9afc615579859', 'SEC5c4e5ff888bc8a9923ae47f59e7ccd30af1f14d93c55b4e2c9cb094e35aeed67', NULL, '1', '2021-04-13 00:23:14', '1', '2022-03-27 20:29:49', b'0');
|
||||
INSERT INTO `system_sms_channel` (`id`, `signature`, `epid`, `code`, `status`, `remark`, `api_key`, `api_secret`, `callback_url`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (7, 'mock腾讯云', NULL, 'TENCENT', 0, '', '1 2', '2 3', '', '1', '2024-09-30 08:53:45', '1', '2024-09-30 08:55:01', b'0');
|
||||
COMMIT;
|
||||
|
||||
-- ----------------------------
|
||||
|
||||
@@ -32,8 +32,6 @@
|
||||
<spring.boot.version>3.4.5</spring.boot.version>
|
||||
<spring.cloud.version>2024.0.1</spring.cloud.version>
|
||||
<spring.cloud.alibaba.version>2023.0.3.2</spring.cloud.alibaba.version>
|
||||
<!-- 分布式事务相关 -->
|
||||
<seata.version>2.4.0</seata.version>
|
||||
<!-- Web 相关 -->
|
||||
<springdoc.version>2.8.3</springdoc.version>
|
||||
<knife4j.version>4.6.0</knife4j.version>
|
||||
@@ -90,8 +88,6 @@
|
||||
<mqtt.version>1.2.5</mqtt.version>
|
||||
<pf4j-spring.version>0.9.0</pf4j-spring.version>
|
||||
<okhttp3.version>4.12.0</okhttp3.version>
|
||||
<docx4j.version>11.4.7</docx4j.version>
|
||||
<docx4j-jaxb.version>11.4.7</docx4j-jaxb.version>
|
||||
<!-- 规则引擎 -->
|
||||
<liteflow.version>2.15.1</liteflow.version>
|
||||
<vertx.version>4.5.13</vertx.version>
|
||||
@@ -137,20 +133,6 @@
|
||||
<scope>import</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- 分布式事务:Seata -->
|
||||
<!-- 显式覆盖 Spring Cloud Alibaba BOM 中的 Seata 1.8.0,升级到 2.4.0 以支持达梦数据库 -->
|
||||
<!-- 注意:Seata 2.2.0+ 改为使用 org.apache.seata groupId -->
|
||||
<dependency>
|
||||
<groupId>org.apache.seata</groupId>
|
||||
<artifactId>seata-all</artifactId>
|
||||
<version>${seata.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.seata</groupId>
|
||||
<artifactId>seata-spring-boot-starter</artifactId>
|
||||
<version>${seata.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- 业务组件 -->
|
||||
<dependency>
|
||||
<groupId>io.github.mouzt</groupId>
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.zt.plat.framework.common.util.security;
|
||||
|
||||
import cn.hutool.crypto.SecureUtil;
|
||||
import com.zt.plat.framework.common.util.json.JsonUtils;
|
||||
|
||||
import javax.crypto.Cipher;
|
||||
import javax.crypto.KeyGenerator;
|
||||
@@ -126,7 +127,11 @@ public final class CryptoSignatureUtils {
|
||||
continue;
|
||||
}
|
||||
sb.append(key).append('=');
|
||||
sb.append(value);
|
||||
if (value instanceof String || value instanceof Number || value instanceof Boolean) {
|
||||
sb.append(value);
|
||||
} else {
|
||||
sb.append(JsonUtils.toJsonString(value));
|
||||
}
|
||||
sb.append('&');
|
||||
}
|
||||
if (sb.length() > 0) {
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user