97 lines
6.1 KiB
SQL
97 lines
6.1 KiB
SQL
-- 通用转账一期业务迁移。先部署既有third_payment_task,再执行本文件。
|
|
-- 业务迁移可重复执行。菜单和按钮权限由配套Markdown表格手工维护。
|
|
CREATE TABLE IF NOT EXISTS third_transfer_order (
|
|
id BIGINT NOT NULL COMMENT '雪花主键',
|
|
tenant_id BIGINT NOT NULL COMMENT '所属租户',
|
|
transfer_no VARCHAR(64) CHARACTER SET ascii COLLATE ascii_bin NOT NULL COMMENT '全局唯一转账号',
|
|
request_no VARCHAR(64) COLLATE utf8mb4_bin NOT NULL COMMENT '租户内稳定请求号',
|
|
request_hash VARCHAR(64) NOT NULL COMMENT '规范化参数SHA256摘要',
|
|
biz_type VARCHAR(64) COLLATE utf8mb4_bin NOT NULL COMMENT '登记的业务类型',
|
|
biz_id VARCHAR(128) NOT NULL COMMENT '关联业务ID',
|
|
platform_type VARCHAR(16) NOT NULL COMMENT '渠道编码',
|
|
amount_fen BIGINT NOT NULL COMMENT '原始金额,单位分',
|
|
currency VARCHAR(8) NOT NULL DEFAULT 'CNY' COMMENT '币种',
|
|
owner_dept_id BIGINT NOT NULL COMMENT '业务归属部门快照',
|
|
owner_dept_name VARCHAR(200) DEFAULT NULL COMMENT '部门名称快照',
|
|
initiator_user_id BIGINT NOT NULL COMMENT '原业务发起用户快照',
|
|
initiator_name VARCHAR(200) DEFAULT NULL COMMENT '发起用户名称快照',
|
|
mch_id BIGINT DEFAULT NULL COMMENT '可选关联商户',
|
|
mch_name VARCHAR(200) DEFAULT NULL COMMENT '商户名称快照',
|
|
payer_app_id VARCHAR(64) NOT NULL COMMENT '实际付款AppID快照',
|
|
payload_ciphertext TEXT NOT NULL COMMENT '加密原始指令,含收款身份',
|
|
receiver_type VARCHAR(64) NOT NULL COMMENT '收款标识类型',
|
|
receiver_account_masked VARCHAR(200) NOT NULL COMMENT '脱敏收款账号',
|
|
receiver_name_masked VARCHAR(200) DEFAULT NULL COMMENT '脱敏收款姓名',
|
|
title VARCHAR(128) NOT NULL COMMENT '账单标题',
|
|
remark VARCHAR(200) DEFAULT NULL COMMENT '付款理由',
|
|
scene_name VARCHAR(64) NOT NULL COMMENT '已申报转账场景',
|
|
request_snapshot TEXT NOT NULL COMMENT '脱敏请求摘要JSON',
|
|
status VARCHAR(32) NOT NULL COMMENT '独立资金状态',
|
|
channel_status VARCHAR(64) DEFAULT NULL COMMENT '最近渠道状态',
|
|
channel_order_no VARCHAR(64) DEFAULT NULL COMMENT '渠道转账单号',
|
|
pay_fund_order_no VARCHAR(64) DEFAULT NULL COMMENT '渠道支付资金流水号',
|
|
paid_time DATETIME DEFAULT NULL COMMENT '渠道付款完成时间',
|
|
last_error_code VARCHAR(100) DEFAULT NULL COMMENT '安全渠道错误码',
|
|
last_error_message VARCHAR(500) DEFAULT NULL COMMENT '安全渠道错误摘要',
|
|
needs_attention TINYINT(1) NOT NULL DEFAULT 0 COMMENT '事实异常核对标记',
|
|
notify_service_id VARCHAR(128) NOT NULL COMMENT '登记的接收服务快照',
|
|
notify_id VARCHAR(64) DEFAULT NULL COMMENT '稳定结果通知ID',
|
|
notify_status VARCHAR(32) NOT NULL DEFAULT 'NOT_READY' COMMENT '业务通知状态',
|
|
notify_last_error VARCHAR(500) DEFAULT NULL COMMENT '安全通知错误摘要',
|
|
result_version INT NOT NULL DEFAULT 0 COMMENT '最终结果通知版本',
|
|
version INT NOT NULL DEFAULT 0 COMMENT '状态行版本',
|
|
submit_started_time DATETIME DEFAULT NULL COMMENT '首次开始提交时间',
|
|
create_by VARCHAR(128) DEFAULT NULL COMMENT '审计创建人',
|
|
create_time DATETIME NOT NULL COMMENT '本地受理时间',
|
|
update_by VARCHAR(128) DEFAULT NULL COMMENT '审计修改人',
|
|
update_time DATETIME NOT NULL COMMENT '本地更新时间',
|
|
PRIMARY KEY (id),
|
|
UNIQUE KEY uk_transfer_no (transfer_no),
|
|
UNIQUE KEY uk_tenant_request (tenant_id, request_no),
|
|
KEY idx_tenant_created (tenant_id, create_time, id),
|
|
KEY idx_tenant_status (tenant_id, status, update_time, id),
|
|
KEY idx_tenant_business (tenant_id, biz_type, biz_id),
|
|
KEY idx_tenant_department (tenant_id, owner_dept_id, create_time, id),
|
|
KEY idx_tenant_initiator (tenant_id, initiator_user_id, create_time, id),
|
|
KEY idx_tenant_merchant (tenant_id, mch_id, create_time, id)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='第三方转账资金事实';
|
|
|
|
CREATE TABLE IF NOT EXISTS third_transfer_event (
|
|
id BIGINT NOT NULL COMMENT '事件雪花主键',
|
|
tenant_id BIGINT NOT NULL COMMENT '所属租户',
|
|
transfer_order_id BIGINT NOT NULL COMMENT '关联转账主键',
|
|
event_type VARCHAR(64) NOT NULL COMMENT '业务事件类型',
|
|
event_key VARCHAR(128) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '外部通知等事件的去重键',
|
|
from_status VARCHAR(32) DEFAULT NULL COMMENT '事件前资金状态',
|
|
to_status VARCHAR(32) DEFAULT NULL COMMENT '事件后资金状态',
|
|
summary VARCHAR(500) NOT NULL COMMENT '安全业务摘要',
|
|
snapshot TEXT DEFAULT NULL COMMENT '白名单脱敏JSON',
|
|
actor VARCHAR(128) DEFAULT NULL COMMENT '操作人或系统身份',
|
|
create_time DATETIME NOT NULL COMMENT '本地事件时间',
|
|
PRIMARY KEY (id),
|
|
UNIQUE KEY uk_transfer_event (tenant_id, transfer_order_id, event_key),
|
|
KEY idx_transfer_events (tenant_id, transfer_order_id, create_time, id)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='第三方转账追加式业务事件';
|
|
|
|
SET @third_transfer_column_exists = (
|
|
SELECT COUNT(*) FROM information_schema.columns
|
|
WHERE table_schema = DATABASE() AND table_name = 'third_payment_task' AND column_name = 'transfer_order_id'
|
|
);
|
|
SET @third_transfer_ddl = IF(@third_transfer_column_exists = 0,
|
|
'ALTER TABLE third_payment_task ADD COLUMN transfer_order_id BIGINT NULL COMMENT ''关联转账单主键'' AFTER pay_order_id',
|
|
'SELECT ''transfer_order_id already exists''');
|
|
PREPARE third_transfer_stmt FROM @third_transfer_ddl;
|
|
EXECUTE third_transfer_stmt;
|
|
DEALLOCATE PREPARE third_transfer_stmt;
|
|
|
|
SET @third_transfer_index_exists = (
|
|
SELECT COUNT(*) FROM information_schema.statistics
|
|
WHERE table_schema = DATABASE() AND table_name = 'third_payment_task' AND index_name = 'idx_tenant_transfer_order'
|
|
);
|
|
SET @third_transfer_ddl = IF(@third_transfer_index_exists = 0,
|
|
'ALTER TABLE third_payment_task ADD INDEX idx_tenant_transfer_order (tenant_id, transfer_order_id, id)',
|
|
'SELECT ''idx_tenant_transfer_order already exists''');
|
|
PREPARE third_transfer_stmt FROM @third_transfer_ddl;
|
|
EXECUTE third_transfer_stmt;
|
|
DEALLOCATE PREPARE third_transfer_stmt;
|