Files
mpay_v2_webman/doc/db/payment-middle-ddl.sql
技术老胡 0e5de50337 1. 维护代码健壮
2. 更新项目结构文档
2026-04-27 16:20:41 +08:00

610 lines
39 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- 支付中台最新总 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;