-- 支付中台最新总 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 '所属商户ID,0表示平台配置', `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 '所属商户ID,0表示平台通道', `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-MD5(V1)', `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;