1. 维护代码健壮

2. 更新项目结构文档
This commit is contained in:
技术老胡
2026-04-27 16:20:41 +08:00
parent 9a16a88640
commit 0e5de50337
198 changed files with 21038 additions and 702 deletions

View File

@@ -0,0 +1,609 @@
-- 支付中台最新总 DDL
-- 说明:
-- 1. 本文件汇总当前最新表结构,作为后续 Navicat 调整和代码对齐的参考基线。
-- 2. 当前以 `ma_merchant` 为商户主体和后台登录主体,登录口径是 `merchant_no + password_hash`。
-- 3. `ma_merchant_api_credential` 仅用于开放接口签名与兼容层,不参与商户后台登录。
-- 4. 已删除 `channel_code` 业务编码,所有关联一律使用主键 `id`。
-- 5. 路由链路采用:商户分组 -> 轮询组 -> 支付通道。
-- 6. `ma_merchant_policy` 当前仅保留预留表结构,不作为正式后台能力暴露。
-- 7. 所有状态、模式、类型类字段统一使用 `tinyint`,语义映射请见 `app/common/constant`。
-- 8. `ext_json` 使用分区结构保存轻量运行上下文;`_protocol_version` 可放顶层便于查询,通知/回调/重试/原始报文进入专门日志表。
-- 9. `ma_pay_order` 不再保留 `request_method` 这类 HTTP 快照字段。
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
CREATE TABLE IF NOT EXISTS `ma_payment_type` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`code` varchar(32) NOT NULL DEFAULT '' COMMENT '支付方式编码',
`name` varchar(50) NOT NULL DEFAULT '' COMMENT '支付方式名称',
`icon` varchar(255) NOT NULL DEFAULT '' COMMENT '图标',
`sort_no` int NOT NULL DEFAULT 0 COMMENT '排序',
`status` tinyint NOT NULL DEFAULT 1 COMMENT '状态0-禁用1-启用',
`remark` varchar(500) NOT NULL DEFAULT '' COMMENT '备注',
`created_at` datetime DEFAULT NULL COMMENT '创建时间',
`updated_at` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_code` (`code`),
KEY `idx_status_sort` (`status`, `sort_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='支付方式字典表';
CREATE TABLE IF NOT EXISTS `ma_merchant_group` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`group_name` varchar(100) NOT NULL DEFAULT '' COMMENT '商户分组名称',
`status` tinyint NOT NULL DEFAULT 1 COMMENT '状态0-禁用,1-启用',
`remark` varchar(500) NOT NULL DEFAULT '' COMMENT '备注',
`created_at` datetime DEFAULT NULL COMMENT '创建时间',
`updated_at` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_group_name` (`group_name`),
KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商户分组表';
CREATE TABLE IF NOT EXISTS `ma_merchant` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`merchant_no` varchar(32) NOT NULL DEFAULT '' COMMENT '商户号(唯一,对外标识,同时作为后台登录账号)',
`password_hash` varchar(255) NOT NULL DEFAULT '' COMMENT '商户后台登录密码哈希',
`merchant_name` varchar(100) NOT NULL DEFAULT '' COMMENT '商户名称',
`merchant_short_name` varchar(60) NOT NULL DEFAULT '' COMMENT '商户简称',
`merchant_type` tinyint NOT NULL DEFAULT 0 COMMENT '商户类型0-个人1-企业2-其他',
`group_id` int unsigned NOT NULL DEFAULT 0 COMMENT '商户分组ID',
`risk_level` tinyint NOT NULL DEFAULT 0 COMMENT '风控等级0-低1-中2-高',
`contact_name` varchar(50) NOT NULL DEFAULT '' COMMENT '联系人姓名',
`contact_phone` varchar(20) NOT NULL DEFAULT '' COMMENT '联系人手机号',
`contact_email` varchar(100) NOT NULL DEFAULT '' COMMENT '联系人邮箱',
`settlement_account_name` varchar(100) NOT NULL DEFAULT '' COMMENT '结算账户名',
`settlement_account_no` varchar(100) NOT NULL DEFAULT '' COMMENT '结算账户号',
`settlement_bank_name` varchar(100) NOT NULL DEFAULT '' COMMENT '结算银行名称',
`settlement_bank_branch` varchar(100) NOT NULL DEFAULT '' COMMENT '结算支行名称',
`status` tinyint NOT NULL DEFAULT 1 COMMENT '状态0-禁用, 1-启用',
`pay_status` tinyint NOT NULL DEFAULT 1 COMMENT '支付开关0-关闭,1-开启',
`settle_status` tinyint NOT NULL DEFAULT 1 COMMENT '结算开关0-关闭,1-开启',
`settle_type` tinyint NOT NULL DEFAULT 4 COMMENT '结算类型1-支付宝,2-微信,3-QQ,4-银行卡',
`last_login_at` datetime DEFAULT NULL COMMENT '最后登录时间',
`last_login_ip` varchar(45) NOT NULL DEFAULT '' COMMENT '最后登录IP',
`password_updated_at` datetime DEFAULT NULL COMMENT '密码更新时间',
`remark` varchar(500) NOT NULL DEFAULT '' COMMENT '备注',
`created_at` datetime DEFAULT NULL COMMENT '创建时间',
`updated_at` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_merchant_no` (`merchant_no`),
KEY `idx_group_id` (`group_id`),
KEY `idx_contact_phone` (`contact_phone`),
KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商户表';
CREATE TABLE IF NOT EXISTS `ma_payment_plugin` (
`code` varchar(32) NOT NULL DEFAULT '' COMMENT '插件编码',
`name` varchar(50) NOT NULL DEFAULT '' COMMENT '插件名称',
`class_name` varchar(255) NOT NULL DEFAULT '' COMMENT '插件类名',
`config_schema` json DEFAULT NULL COMMENT '插件配置Schema(JSON)',
`pay_types` json DEFAULT NULL COMMENT '支持的支付方式编码(JSON)',
`transfer_types` json DEFAULT NULL COMMENT '支持的转账方式编码(JSON)',
`version` varchar(20) NOT NULL DEFAULT '' COMMENT '版本',
`author` varchar(50) NOT NULL DEFAULT '' COMMENT '作者',
`link` varchar(255) NOT NULL DEFAULT '' COMMENT '链接',
`allow_merchant` tinyint NOT NULL DEFAULT 0 COMMENT '是否允许商户端自助使用0-否,1-是',
`status` tinyint NOT NULL DEFAULT 1 COMMENT '状态0-禁用, 1-启用',
`remark` varchar(500) NOT NULL DEFAULT '' COMMENT '备注',
`created_at` datetime DEFAULT NULL COMMENT '创建时间',
`updated_at` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`code`),
KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='支付插件注册表';
CREATE TABLE IF NOT EXISTS `ma_payment_plugin_conf` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`merchant_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '所属商户ID0表示平台配置',
`plugin_code` varchar(32) NOT NULL DEFAULT '' COMMENT '插件编码',
`config` json DEFAULT NULL COMMENT '插件初始化配置',
`settlement_cycle_type` tinyint unsigned NOT NULL DEFAULT 1 COMMENT '结算周期类型0-D0,1-D1,2-D7,3-T1,4-OTHER',
`settlement_cutoff_time` varchar(8) NOT NULL DEFAULT '23:59:59' COMMENT '结算截止时间',
`remark` varchar(500) NOT NULL DEFAULT '' COMMENT '备注',
`created_at` datetime DEFAULT NULL COMMENT '创建时间',
`updated_at` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_plugin_code` (`plugin_code`),
KEY `idx_merchant_plugin` (`merchant_id`, `plugin_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='支付插件API配置表';
CREATE TABLE IF NOT EXISTS `ma_payment_channel` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`merchant_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '所属商户ID0表示平台通道',
`name` varchar(100) NOT NULL DEFAULT '' COMMENT '通道名称',
`split_rate_bp` int unsigned NOT NULL DEFAULT 10000 COMMENT '分成比例bp',
`cost_rate_bp` int unsigned NOT NULL DEFAULT 0 COMMENT '通道成本bp',
`channel_mode` tinyint NOT NULL DEFAULT 0 COMMENT '通道模式0-代收1-自收',
`pay_type_id` int unsigned NOT NULL DEFAULT 0 COMMENT '支付方式ID',
`plugin_code` varchar(32) NOT NULL DEFAULT '' COMMENT '支付插件编码',
`api_config_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT 'API配置ID关联插件配置表主键ID',
`daily_limit_amount` bigint unsigned NOT NULL DEFAULT 0 COMMENT '单日限额0表示不限制',
`daily_limit_count` int unsigned NOT NULL DEFAULT 0 COMMENT '单日限笔0表示不限制',
`min_amount` bigint unsigned NOT NULL DEFAULT 0 COMMENT '单笔最小金额(分)',
`max_amount` bigint unsigned NOT NULL DEFAULT 0 COMMENT '单笔最大金额(分)',
`remark` varchar(500) NOT NULL DEFAULT '' COMMENT '备注',
`status` tinyint NOT NULL DEFAULT 1 COMMENT '状态0-禁用,1-启用',
`sort_no` int NOT NULL DEFAULT 0 COMMENT '排序,越小优先级越高',
`created_at` datetime DEFAULT NULL COMMENT '创建时间',
`updated_at` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_name` (`name`),
KEY `idx_merchant_id_status` (`merchant_id`, `status`),
KEY `idx_pay_type_id_status` (`pay_type_id`, `status`),
KEY `idx_plugin_code_status` (`plugin_code`, `status`),
KEY `idx_channel_mode_status` (`channel_mode`, `status`),
KEY `idx_sort_no` (`sort_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='支付通道表';
CREATE TABLE IF NOT EXISTS `ma_payment_poll_group` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`group_name` varchar(100) NOT NULL DEFAULT '' COMMENT '轮询组名称',
`pay_type_id` int unsigned NOT NULL DEFAULT 0 COMMENT '支付方式ID',
`route_mode` tinyint NOT NULL DEFAULT 0 COMMENT '路由模式0-顺序依次轮询,1-权重随机轮询,2-默认启用通道',
`status` tinyint NOT NULL DEFAULT 1 COMMENT '状态0-禁用,1-启用',
`remark` varchar(500) NOT NULL DEFAULT '' COMMENT '备注',
`created_at` datetime DEFAULT NULL COMMENT '创建时间',
`updated_at` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_group_name` (`group_name`),
KEY `idx_pay_type_status` (`pay_type_id`, `status`),
KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='支付轮询组表';
CREATE TABLE IF NOT EXISTS `ma_payment_poll_group_channel` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`poll_group_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '轮询组ID',
`channel_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '支付通道ID',
`sort_no` int NOT NULL DEFAULT 0 COMMENT '排序,越小优先级越高',
`weight` int NOT NULL DEFAULT 100 COMMENT '权重',
`is_default` tinyint NOT NULL DEFAULT 0 COMMENT '是否默认通道0-否,1-是',
`status` tinyint NOT NULL DEFAULT 1 COMMENT '状态0-禁用,1-启用',
`remark` varchar(500) NOT NULL DEFAULT '' COMMENT '备注',
`created_at` datetime DEFAULT NULL COMMENT '创建时间',
`updated_at` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_poll_group_channel` (`poll_group_id`, `channel_id`),
KEY `idx_poll_group_status_sort` (`poll_group_id`, `status`, `sort_no`),
KEY `idx_channel_status` (`channel_id`, `status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='支付轮询组-通道编排表';
CREATE TABLE IF NOT EXISTS `ma_payment_poll_group_bind` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`merchant_group_id` int unsigned NOT NULL DEFAULT 0 COMMENT '商户分组ID',
`pay_type_id` int unsigned NOT NULL DEFAULT 0 COMMENT '支付方式ID',
`poll_group_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '轮询组ID',
`status` tinyint NOT NULL DEFAULT 1 COMMENT '状态0-禁用,1-启用',
`remark` varchar(500) NOT NULL DEFAULT '' COMMENT '备注',
`created_at` datetime DEFAULT NULL COMMENT '创建时间',
`updated_at` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_group_pay_type` (`merchant_group_id`, `pay_type_id`),
KEY `idx_poll_group_status` (`poll_group_id`, `status`),
KEY `idx_group_status` (`merchant_group_id`, `status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商户分组-轮询组绑定表';
CREATE TABLE IF NOT EXISTS `ma_merchant_policy` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`merchant_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '商户ID唯一',
`settlement_cycle_override` tinyint unsigned NOT NULL DEFAULT 1 COMMENT '结算周期覆盖0-D0,1-D1,2-D7,3-T1,4-OTHER',
`auto_payout` tinyint NOT NULL DEFAULT 0 COMMENT '是否自动入账/自动处理0-否,1-是',
`min_settlement_amount` bigint unsigned NOT NULL DEFAULT 0 COMMENT '最小结算金额(分)',
`retry_policy_json` json DEFAULT NULL COMMENT '失败重试策略(JSON)',
`route_policy_json` json DEFAULT NULL COMMENT '路由策略(JSON)',
`fee_rule_override_json` json DEFAULT NULL COMMENT '费率/计费覆盖策略(JSON)',
`risk_policy_json` json DEFAULT NULL COMMENT '风控策略(JSON)',
`remark` varchar(500) NOT NULL DEFAULT '' COMMENT '备注',
`created_at` datetime DEFAULT NULL COMMENT '创建时间',
`updated_at` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_merchant_id` (`merchant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商户策略预留表';
CREATE TABLE IF NOT EXISTS `ma_biz_order` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`biz_no` varchar(32) NOT NULL DEFAULT '' COMMENT '业务订单号',
`trace_no` varchar(32) NOT NULL DEFAULT '' COMMENT '统一追踪号',
`merchant_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '商户ID',
`merchant_order_no` varchar(64) NOT NULL DEFAULT '' COMMENT '商户订单号(幂等)',
`subject` varchar(255) NOT NULL DEFAULT '' COMMENT '订单标题',
`body` varchar(500) NOT NULL DEFAULT '' COMMENT '订单描述',
`notify_url` varchar(255) NOT NULL DEFAULT '' COMMENT '异步通知地址',
`return_url` varchar(255) NOT NULL DEFAULT '' COMMENT '同步返回地址',
`client_ip` varchar(45) NOT NULL DEFAULT '' COMMENT '客户端IP',
`device` varchar(32) NOT NULL DEFAULT '' COMMENT '设备类型',
`order_amount` bigint unsigned NOT NULL DEFAULT 0 COMMENT '订单金额(分)',
`paid_amount` bigint unsigned NOT NULL DEFAULT 0 COMMENT '已支付金额(分)',
`refund_amount` bigint unsigned NOT NULL DEFAULT 0 COMMENT '已退款金额(分)',
`status` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '状态0-待创建,1-支付中,2-成功,3-失败,4-关闭,5-超时',
`active_pay_no` varchar(32) DEFAULT NULL COMMENT '当前正在支付的支付单号',
`attempt_count` int unsigned NOT NULL DEFAULT 0 COMMENT '支付尝试次数',
`expire_at` datetime DEFAULT NULL COMMENT '过期时间',
`paid_at` datetime DEFAULT NULL COMMENT '支付成功时间',
`closed_at` datetime DEFAULT NULL COMMENT '关闭时间',
`failed_at` datetime DEFAULT NULL COMMENT '失败时间',
`timeout_at` datetime DEFAULT NULL COMMENT '超时时间',
`ext_json` json DEFAULT NULL COMMENT '商户扩展字段(JSON)',
`created_at` datetime DEFAULT NULL COMMENT '创建时间',
`updated_at` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_merchant_order` (`merchant_id`, `merchant_order_no`),
UNIQUE KEY `uk_biz_no` (`biz_no`),
KEY `idx_trace_no` (`trace_no`),
KEY `idx_merchant_status_created` (`merchant_id`, `status`, `created_at`),
KEY `idx_active_pay_no` (`active_pay_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='业务订单表';
CREATE TABLE IF NOT EXISTS `ma_pay_order` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`pay_no` varchar(32) NOT NULL DEFAULT '' COMMENT '支付单号',
`biz_no` varchar(32) NOT NULL DEFAULT '' COMMENT '业务订单号',
`trace_no` varchar(32) NOT NULL DEFAULT '' COMMENT '统一追踪号',
`merchant_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '商户ID',
`merchant_group_id` int unsigned NOT NULL DEFAULT 0 COMMENT '商户分组ID快照',
`poll_group_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '轮询组ID快照',
`attempt_no` int unsigned NOT NULL DEFAULT 1 COMMENT '支付尝试序号',
`channel_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '支付通道ID',
`pay_type_id` int unsigned NOT NULL DEFAULT 0 COMMENT '支付方式ID',
`plugin_code` varchar(32) NOT NULL DEFAULT '' COMMENT '支付插件编码',
`channel_type` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '通道类型0-平台代收,1-商户自有',
`channel_mode` tinyint NOT NULL DEFAULT 0 COMMENT '通道模式0-代收1-自收',
`pay_amount` bigint unsigned NOT NULL DEFAULT 0 COMMENT '支付金额(分)',
`notify_url` varchar(255) NOT NULL DEFAULT '' COMMENT '异步通知地址',
`return_url` varchar(255) NOT NULL DEFAULT '' COMMENT '跳转通知地址',
`client_ip` varchar(45) NOT NULL DEFAULT '' COMMENT '客户端 IP',
`device` varchar(32) NOT NULL DEFAULT '' COMMENT '设备类型',
`fee_rate_bp_snapshot` int unsigned NOT NULL DEFAULT 0 COMMENT '费率bp快照',
`split_rate_bp_snapshot` int unsigned NOT NULL DEFAULT 10000 COMMENT '分成比例bp快照',
`fee_estimated_amount` bigint unsigned NOT NULL DEFAULT 0 COMMENT '预估手续费(分)',
`fee_actual_amount` bigint unsigned NOT NULL DEFAULT 0 COMMENT '实际手续费(分)',
`status` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '状态0-待创建,1-支付中,2-成功,3-失败,4-关闭,5-超时',
`fee_status` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '手续费状态0-无,1-冻结,2-已扣,3-已释放',
`settlement_status` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '清算状态0-无,1-待清算,2-已清算,3-已冲正',
`channel_request_no` varchar(64) NOT NULL DEFAULT '' COMMENT '渠道请求号(幂等)',
`channel_order_no` varchar(64) DEFAULT NULL COMMENT '渠道订单号',
`channel_trade_no` varchar(64) DEFAULT NULL COMMENT '渠道交易号',
`channel_error_code` varchar(64) NOT NULL DEFAULT '' COMMENT '渠道错误码',
`channel_error_msg` varchar(255) NOT NULL DEFAULT '' COMMENT '渠道错误信息',
`request_at` datetime DEFAULT NULL COMMENT '请求时间',
`paid_at` datetime DEFAULT NULL COMMENT '支付成功时间',
`expire_at` datetime DEFAULT NULL COMMENT '过期时间',
`closed_at` datetime DEFAULT NULL COMMENT '关闭时间',
`failed_at` datetime DEFAULT NULL COMMENT '失败时间',
`timeout_at` datetime DEFAULT NULL COMMENT '超时时间',
`callback_status` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '回调处理状态0-未回调,1-成功,2-失败',
`callback_times` int unsigned NOT NULL DEFAULT 0 COMMENT '回调次数',
`ext_json` json DEFAULT NULL COMMENT '商户扩展字段(JSON)',
`created_at` datetime DEFAULT NULL COMMENT '创建时间',
`updated_at` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_pay_no` (`pay_no`),
UNIQUE KEY `uk_biz_attempt` (`biz_no`, `attempt_no`),
UNIQUE KEY `uk_channel_request_no` (`merchant_id`, `channel_request_no`),
KEY `idx_trace_no` (`trace_no`),
KEY `idx_merchant_status_created` (`merchant_id`, `status`, `created_at`),
KEY `idx_channel_trade_no` (`channel_trade_no`),
KEY `idx_channel_id_status` (`channel_id`, `status`),
KEY `idx_poll_group_id` (`poll_group_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='支付单表';
CREATE TABLE IF NOT EXISTS `ma_refund_order` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`refund_no` varchar(32) NOT NULL DEFAULT '' COMMENT '退款单号',
`merchant_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '商户ID',
`merchant_group_id` int unsigned NOT NULL DEFAULT 0 COMMENT '商户分组ID快照',
`biz_no` varchar(32) NOT NULL DEFAULT '' COMMENT '业务订单号',
`trace_no` varchar(32) NOT NULL DEFAULT '' COMMENT '统一追踪号',
`pay_no` varchar(32) NOT NULL DEFAULT '' COMMENT '支付单号',
`merchant_refund_no` varchar(64) NOT NULL DEFAULT '' COMMENT '商户退款号(幂等)',
`channel_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '支付通道ID',
`refund_amount` bigint unsigned NOT NULL DEFAULT 0 COMMENT '退款金额(分)',
`fee_reverse_amount` bigint unsigned NOT NULL DEFAULT 0 COMMENT '手续费冲回金额(分)',
`status` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '状态0-待创建,1-处理中,2-成功,3-失败,4-关闭',
`channel_request_no` varchar(64) NOT NULL DEFAULT '' COMMENT '渠道退款请求号(幂等)',
`channel_refund_no` varchar(64) DEFAULT NULL COMMENT '渠道退款号',
`reason` varchar(255) NOT NULL DEFAULT '' COMMENT '退款原因',
`request_at` datetime DEFAULT NULL COMMENT '申请时间',
`processing_at` datetime DEFAULT NULL COMMENT '处理时间',
`succeeded_at` datetime DEFAULT NULL COMMENT '成功时间',
`failed_at` datetime DEFAULT NULL COMMENT '失败时间',
`retry_count` int unsigned NOT NULL DEFAULT 0 COMMENT '重试次数',
`last_error` varchar(255) NOT NULL DEFAULT '' COMMENT '最近错误信息',
`ext_json` json DEFAULT NULL COMMENT '商户扩展字段(JSON)',
`created_at` datetime DEFAULT NULL COMMENT '创建时间',
`updated_at` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_refund_no` (`refund_no`),
UNIQUE KEY `uk_merchant_refund_no` (`merchant_id`, `merchant_refund_no`),
UNIQUE KEY `uk_channel_request_no` (`merchant_id`, `channel_request_no`),
KEY `idx_trace_no` (`trace_no`),
KEY `idx_biz_status_created` (`biz_no`, `status`, `created_at`),
KEY `idx_merchant_status_created` (`merchant_id`, `status`, `created_at`),
KEY `idx_pay_no` (`pay_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='退款单表';
CREATE TABLE IF NOT EXISTS `ma_transfer_order` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`biz_no` varchar(32) NOT NULL DEFAULT '' COMMENT '业务号',
`trace_no` varchar(32) NOT NULL DEFAULT '' COMMENT '统一追踪号',
`merchant_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '商户ID',
`merchant_group_id` int unsigned NOT NULL DEFAULT 0 COMMENT '商户分组ID快照',
`out_biz_no` varchar(64) NOT NULL DEFAULT '' COMMENT '商户转账单号',
`type` varchar(32) NOT NULL DEFAULT '' COMMENT '转账类型',
`account` varchar(100) NOT NULL DEFAULT '' COMMENT '收款账号',
`name` varchar(100) NOT NULL DEFAULT '' COMMENT '收款姓名',
`amount` bigint unsigned NOT NULL DEFAULT 0 COMMENT '转账金额(分)',
`cost_amount` bigint unsigned NOT NULL DEFAULT 0 COMMENT '手续费(分)',
`remark` varchar(255) NOT NULL DEFAULT '' COMMENT '备注',
`bookid` varchar(64) NOT NULL DEFAULT '' COMMENT '书签ID',
`channel_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '通道ID',
`channel_request_no` varchar(64) NOT NULL DEFAULT '' COMMENT '渠道请求号',
`channel_order_no` varchar(64) DEFAULT NULL COMMENT '渠道订单号',
`channel_trade_no` varchar(64) DEFAULT NULL COMMENT '渠道交易号',
`channel_error_code` varchar(64) NOT NULL DEFAULT '' COMMENT '渠道错误码',
`channel_error_msg` varchar(255) NOT NULL DEFAULT '' COMMENT '渠道错误信息',
`status` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '状态0-待处理,1-成功,2-失败',
`request_at` datetime DEFAULT NULL COMMENT '请求时间',
`processing_at` datetime DEFAULT NULL COMMENT '处理中时间',
`succeeded_at` datetime DEFAULT NULL COMMENT '成功时间',
`failed_at` datetime DEFAULT NULL COMMENT '失败时间',
`ext_json` json DEFAULT NULL COMMENT '商户扩展字段(JSON)',
`created_at` datetime DEFAULT NULL COMMENT '创建时间',
`updated_at` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_biz_no` (`biz_no`),
UNIQUE KEY `uk_merchant_channel_request_no` (`merchant_id`, `channel_request_no`),
UNIQUE KEY `uk_merchant_out_biz_no` (`merchant_id`, `out_biz_no`),
KEY `idx_trace_no` (`trace_no`),
KEY `idx_merchant_status_created` (`merchant_id`, `status`, `created_at`),
KEY `idx_channel_trade_no` (`channel_trade_no`),
KEY `idx_channel_id_status` (`channel_id`, `status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='转账单表';
CREATE TABLE IF NOT EXISTS `ma_merchant_account` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`merchant_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '商户ID唯一',
`available_balance` bigint unsigned NOT NULL DEFAULT 0 COMMENT '可提现余额(分)',
`frozen_balance` bigint unsigned NOT NULL DEFAULT 0 COMMENT '冻结余额(分)',
`created_at` datetime DEFAULT NULL COMMENT '创建时间',
`updated_at` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_merchant_id` (`merchant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商户余额账户表';
CREATE TABLE IF NOT EXISTS `ma_merchant_account_ledger` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`ledger_no` varchar(32) NOT NULL DEFAULT '' COMMENT '流水号',
`merchant_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '商户ID',
`biz_type` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '业务类型0-支付冻结,1-支付扣费,2-支付释放,3-清算入账,4-退款冲正,5-人工调整',
`biz_no` varchar(32) NOT NULL DEFAULT '' COMMENT '业务单号',
`trace_no` varchar(32) NOT NULL DEFAULT '' COMMENT '统一追踪号',
`event_type` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '事件类型0-创建,1-成功,2-失败,3-冲正',
`direction` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '方向0-入账,1-出账',
`amount` bigint unsigned NOT NULL DEFAULT 0 COMMENT '变动金额(分)',
`available_before` bigint unsigned NOT NULL DEFAULT 0 COMMENT '变动前可用余额(分)',
`available_after` bigint unsigned NOT NULL DEFAULT 0 COMMENT '变动后可用余额(分)',
`frozen_before` bigint unsigned NOT NULL DEFAULT 0 COMMENT '变动前冻结余额(分)',
`frozen_after` bigint unsigned NOT NULL DEFAULT 0 COMMENT '变动后冻结余额(分)',
`idempotency_key` varchar(100) NOT NULL DEFAULT '' COMMENT '幂等键',
`remark` varchar(255) NOT NULL DEFAULT '' COMMENT '备注',
`ext_json` json DEFAULT NULL COMMENT '账务扩展字段(JSON)',
`created_at` datetime DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_idempotency_key` (`idempotency_key`),
KEY `idx_trace_no` (`trace_no`),
KEY `idx_merchant_biz` (`merchant_id`, `biz_type`, `biz_no`),
KEY `idx_merchant_created` (`merchant_id`, `created_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商户余额流水表';
CREATE TABLE IF NOT EXISTS `ma_settlement_order` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`settle_no` varchar(32) NOT NULL DEFAULT '' COMMENT '清算单号',
`trace_no` varchar(32) NOT NULL DEFAULT '' COMMENT '统一追踪号',
`merchant_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '商户ID',
`merchant_group_id` int unsigned NOT NULL DEFAULT 0 COMMENT '商户分组ID快照',
`channel_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '支付通道ID',
`cycle_type` tinyint unsigned NOT NULL DEFAULT 1 COMMENT '周期类型0-D0,1-D1,2-D7,3-T1,4-OTHER',
`cycle_key` varchar(32) NOT NULL DEFAULT '' COMMENT '周期标识,如日期或批次号',
`status` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '状态0-待处理,1-处理中,2-成功,3-失败,4-已冲正',
`gross_amount` bigint unsigned NOT NULL DEFAULT 0 COMMENT '清算前总额(分)',
`fee_amount` bigint unsigned NOT NULL DEFAULT 0 COMMENT '手续费总额(分)',
`refund_amount` bigint unsigned NOT NULL DEFAULT 0 COMMENT '退款本金(分)',
`fee_reverse_amount` bigint unsigned NOT NULL DEFAULT 0 COMMENT '手续费冲回金额(分)',
`net_amount` bigint unsigned NOT NULL DEFAULT 0 COMMENT '净额(分)',
`accounted_amount` bigint unsigned NOT NULL DEFAULT 0 COMMENT '实际入账金额(分)',
`generated_at` datetime DEFAULT NULL COMMENT '生成时间',
`accounted_at` datetime DEFAULT NULL COMMENT '入账时间',
`completed_at` datetime DEFAULT NULL COMMENT '完成时间',
`failed_at` datetime DEFAULT NULL COMMENT '失败时间',
`fail_reason` varchar(255) NOT NULL DEFAULT '' COMMENT '失败原因',
`ext_json` json DEFAULT NULL COMMENT '清算扩展字段(JSON)',
`created_at` datetime DEFAULT NULL COMMENT '创建时间',
`updated_at` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_cycle` (`merchant_id`, `channel_id`, `cycle_type`, `cycle_key`),
UNIQUE KEY `uk_settle_no` (`settle_no`),
KEY `idx_trace_no` (`trace_no`),
KEY `idx_merchant_status_created` (`merchant_id`, `status`, `created_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='清算单表';
CREATE TABLE IF NOT EXISTS `ma_settlement_item` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`settle_no` varchar(32) NOT NULL DEFAULT '' COMMENT '清算单号',
`merchant_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '商户ID',
`merchant_group_id` int unsigned NOT NULL DEFAULT 0 COMMENT '商户分组ID快照',
`channel_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '支付通道ID',
`pay_no` varchar(32) NOT NULL DEFAULT '' COMMENT '支付单号',
`refund_no` varchar(32) DEFAULT NULL COMMENT '退款单号',
`pay_amount` bigint unsigned NOT NULL DEFAULT 0 COMMENT '支付金额(分)',
`fee_amount` bigint unsigned NOT NULL DEFAULT 0 COMMENT '手续费金额(分)',
`refund_amount` bigint unsigned NOT NULL DEFAULT 0 COMMENT '退款本金(分)',
`fee_reverse_amount` bigint unsigned NOT NULL DEFAULT 0 COMMENT '手续费冲回金额(分)',
`net_amount` bigint unsigned NOT NULL DEFAULT 0 COMMENT '净额(分)',
`item_status` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '明细状态0-待处理,1-成功,2-失败',
`created_at` datetime DEFAULT NULL COMMENT '创建时间',
`updated_at` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_settle_pay` (`settle_no`, `pay_no`),
KEY `idx_pay_no` (`pay_no`),
KEY `idx_channel_id` (`channel_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='清算明细表';
CREATE TABLE IF NOT EXISTS `ma_channel_notify_log` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`notify_no` varchar(32) NOT NULL DEFAULT '' COMMENT '通知日志号',
`channel_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '通道ID',
`notify_type` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '通知类型0-异步通知,1-查单',
`biz_no` varchar(32) NOT NULL DEFAULT '' COMMENT '业务单号',
`pay_no` varchar(32) DEFAULT NULL COMMENT '支付单号',
`channel_request_no` varchar(64) DEFAULT NULL COMMENT '渠道请求号',
`channel_trade_no` varchar(64) DEFAULT NULL COMMENT '渠道交易号',
`raw_payload` longtext COMMENT '原始报文',
`verify_status` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '验签状态0-未知,1-成功,2-失败',
`process_status` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '处理状态0-待处理,1-成功,2-失败',
`retry_count` int unsigned NOT NULL DEFAULT 0 COMMENT '重试次数',
`next_retry_at` datetime DEFAULT NULL COMMENT '下次重试时间',
`last_error` varchar(255) NOT NULL DEFAULT '' COMMENT '最近错误信息',
`created_at` datetime DEFAULT NULL COMMENT '创建时间',
`updated_at` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_notify_no` (`notify_no`),
UNIQUE KEY `uk_channel_notify` (`channel_id`, `notify_type`, `biz_no`),
KEY `idx_pay_status` (`pay_no`, `process_status`),
KEY `idx_trade_no` (`channel_trade_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='通道通知日志表';
CREATE TABLE IF NOT EXISTS `ma_pay_callback_log` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`pay_no` varchar(32) NOT NULL DEFAULT '' COMMENT '支付单号',
`channel_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '通道ID',
`callback_type` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '回调类型0-异步通知,1-同步返回',
`request_data` longtext COMMENT '请求原始数据(完整回调参数)',
`verify_status` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '验签状态0-未知,1-成功,2-失败',
`process_status` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '处理状态0-待处理,1-成功,2-失败',
`process_result` longtext COMMENT '处理结果JSON或文本',
`created_at` datetime DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (`id`),
KEY `idx_pay_created` (`pay_no`, `created_at`),
KEY `idx_channel_created` (`channel_id`, `created_at`),
KEY `idx_callback_type` (`callback_type`),
KEY `idx_verify_status` (`verify_status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='支付回调日志表';
CREATE TABLE IF NOT EXISTS `ma_channel_daily_stat` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`merchant_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '商户ID',
`merchant_group_id` int unsigned NOT NULL DEFAULT 0 COMMENT '商户分组ID快照',
`channel_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '支付通道ID',
`stat_date` date NOT NULL COMMENT '统计日期',
`pay_success_count` int unsigned NOT NULL DEFAULT 0 COMMENT '支付成功笔数',
`pay_fail_count` int unsigned NOT NULL DEFAULT 0 COMMENT '支付失败笔数',
`pay_amount` bigint unsigned NOT NULL DEFAULT 0 COMMENT '支付成功金额(分)',
`refund_count` int unsigned NOT NULL DEFAULT 0 COMMENT '退款笔数',
`refund_amount` bigint unsigned NOT NULL DEFAULT 0 COMMENT '退款金额(分)',
`avg_latency_ms` int unsigned NOT NULL DEFAULT 0 COMMENT '平均耗时(毫秒)',
`success_rate_bp` int unsigned NOT NULL DEFAULT 0 COMMENT '成功率bp',
`health_score` int NOT NULL DEFAULT 0 COMMENT '健康度评分',
`created_at` datetime DEFAULT NULL COMMENT '创建时间',
`updated_at` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_channel_stat_date` (`channel_id`, `stat_date`),
KEY `idx_merchant_date` (`merchant_id`, `stat_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='通道日统计表';
CREATE TABLE IF NOT EXISTS `ma_notify_task` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`notify_no` varchar(32) NOT NULL DEFAULT '' COMMENT '通知任务号',
`merchant_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '商户ID',
`merchant_group_id` int unsigned NOT NULL DEFAULT 0 COMMENT '商户分组ID快照',
`biz_no` varchar(32) NOT NULL DEFAULT '' COMMENT '业务单号',
`pay_no` varchar(32) NOT NULL DEFAULT '' COMMENT '支付单号',
`notify_url` varchar(255) NOT NULL DEFAULT '' COMMENT '通知地址',
`notify_data` longtext COMMENT '通知内容',
`status` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '状态0-待通知,1-成功,2-失败',
`retry_count` int unsigned NOT NULL DEFAULT 0 COMMENT '重试次数',
`next_retry_at` datetime DEFAULT NULL COMMENT '下次重试时间',
`last_notify_at` datetime DEFAULT NULL COMMENT '最后通知时间',
`last_response` longtext COMMENT '最后响应内容',
`created_at` datetime DEFAULT NULL COMMENT '创建时间',
`updated_at` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_notify_no` (`notify_no`),
UNIQUE KEY `uk_pay_no` (`pay_no`),
KEY `idx_status_retry` (`status`, `next_retry_at`),
KEY `idx_merchant_group` (`merchant_id`, `merchant_group_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商户通知任务表';
CREATE TABLE IF NOT EXISTS `ma_system_config` (
`config_key` varchar(100) NOT NULL COMMENT '配置项键名',
`config_value` longtext COMMENT '配置项值',
`group_code` varchar(50) NOT NULL DEFAULT '' COMMENT '配置分组',
`created_at` datetime DEFAULT NULL COMMENT '创建时间',
`updated_at` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`config_key`),
KEY `idx_group_code` (`group_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统配置表';
CREATE TABLE IF NOT EXISTS `ma_file_asset` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '文件ID',
`scene` tinyint unsigned NOT NULL DEFAULT 4 COMMENT '文件场景1-图片,2-证书,3-文本,4-其他',
`source_type` tinyint unsigned NOT NULL DEFAULT 1 COMMENT '来源类型1-上传,2-远程导入',
`visibility` tinyint unsigned NOT NULL DEFAULT 2 COMMENT '可见性1-公开,2-私有',
`storage_engine` tinyint unsigned NOT NULL DEFAULT 1 COMMENT '存储引擎1-本地,2-阿里云OSS,3-腾讯云COS,4-远程引用',
`original_name` varchar(255) NOT NULL DEFAULT '' COMMENT '原始文件名',
`file_name` varchar(255) NOT NULL DEFAULT '' COMMENT '存储文件名',
`file_ext` varchar(32) NOT NULL DEFAULT '' COMMENT '文件扩展名',
`mime_type` varchar(128) NOT NULL DEFAULT '' COMMENT '文件 MIME 类型',
`size` bigint unsigned NOT NULL DEFAULT 0 COMMENT '文件大小,单位字节',
`md5` char(32) NOT NULL DEFAULT '' COMMENT '文件 MD5',
`object_key` varchar(512) NOT NULL DEFAULT '' COMMENT '对象存储键或站点相对路径,如 storage/uploads/...',
`url` varchar(1024) NOT NULL DEFAULT '' COMMENT '默认访问地址',
`source_url` varchar(1024) NOT NULL DEFAULT '' COMMENT '远程来源地址',
`created_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '创建人ID',
`created_by_name` varchar(50) NOT NULL DEFAULT '' COMMENT '创建人名称',
`remark` varchar(255) NOT NULL DEFAULT '' COMMENT '备注',
`created_at` datetime DEFAULT NULL COMMENT '创建时间',
`updated_at` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_object_key` (`object_key`),
KEY `idx_scene` (`scene`),
KEY `idx_source_type` (`source_type`),
KEY `idx_visibility` (`visibility`),
KEY `idx_storage_engine` (`storage_engine`),
KEY `idx_created_by` (`created_by`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='文件表';
CREATE TABLE IF NOT EXISTS `ma_admin_user` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '管理员ID',
`username` varchar(32) NOT NULL DEFAULT '' COMMENT '登录用户名',
`password_hash` varchar(255) NOT NULL DEFAULT '' COMMENT '密码哈希',
`real_name` varchar(50) NOT NULL DEFAULT '' COMMENT '真实姓名',
`mobile` varchar(20) NOT NULL DEFAULT '' COMMENT '手机号',
`email` varchar(100) NOT NULL DEFAULT '' COMMENT '邮箱',
`is_super` tinyint NOT NULL DEFAULT 0 COMMENT '是否超级管理员',
`status` tinyint NOT NULL DEFAULT 1 COMMENT '状态0-禁用,1-启用',
`last_login_at` datetime DEFAULT NULL COMMENT '最后登录时间',
`last_login_ip` varchar(45) NOT NULL DEFAULT '' COMMENT '最后登录IP',
`remark` varchar(500) NOT NULL DEFAULT '' COMMENT '备注',
`created_at` datetime DEFAULT NULL COMMENT '创建时间',
`updated_at` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_username` (`username`),
KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='管理员用户表';
CREATE TABLE IF NOT EXISTS `ma_merchant_api_credential` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`merchant_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '商户ID',
`api_key` varchar(128) NOT NULL DEFAULT '' COMMENT '商户 API 凭证值V1 MD5 签名使用)',
`merchant_public_key` text DEFAULT NULL COMMENT '商户 RSA 公钥V2 验签使用)',
`sign_type` tinyint NOT NULL DEFAULT 0 COMMENT '签名类型0-MD5V1',
`status` tinyint NOT NULL DEFAULT 1 COMMENT '状态0-禁用,1-启用',
`last_used_at` datetime DEFAULT NULL COMMENT '最后使用时间',
`created_at` datetime DEFAULT NULL COMMENT '创建时间',
`updated_at` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_merchant_id` (`merchant_id`),
KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商户API凭证表';
SET FOREIGN_KEY_CHECKS = 1;