Files
mpay_v2_webman/database/20260320_align_current_schema.sql
技术老胡 d34bd386ec 更新
2026-04-01 14:30:50 +08:00

170 lines
8.1 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.

-- Current schema alignment for the updated merchant / merchant-app model.
-- Target DB: MySQL 5.7+
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- =========================================================
-- 1. Expand ma_mer for admin + merchant backend scenarios
-- =========================================================
ALTER TABLE `ma_mer`
ADD COLUMN `merchant_short_name` varchar(60) NOT NULL DEFAULT '' COMMENT '商户简称' AFTER `merchant_name`,
ADD COLUMN `merchant_type` varchar(20) NOT NULL DEFAULT 'company' COMMENT '商户类型company/individual/other' AFTER `merchant_short_name`,
ADD COLUMN `group_code` varchar(32) NOT NULL DEFAULT '' COMMENT '商户分组编码' AFTER `merchant_type`,
ADD COLUMN `legal_name` varchar(100) NOT NULL DEFAULT '' COMMENT '法人姓名' AFTER `funds_mode`,
ADD COLUMN `contact_name` varchar(50) NOT NULL DEFAULT '' COMMENT '联系人姓名' AFTER `legal_name`,
ADD COLUMN `contact_phone` varchar(20) NOT NULL DEFAULT '' COMMENT '联系人手机号' AFTER `contact_name`,
ADD COLUMN `contact_email` varchar(100) NOT NULL DEFAULT '' COMMENT '联系人邮箱' AFTER `contact_phone`,
ADD COLUMN `website` varchar(255) NOT NULL DEFAULT '' COMMENT '商户官网' AFTER `contact_email`,
ADD COLUMN `province` varchar(50) NOT NULL DEFAULT '' COMMENT '省份' AFTER `website`,
ADD COLUMN `city` varchar(50) NOT NULL DEFAULT '' COMMENT '城市' AFTER `province`,
ADD COLUMN `address` varchar(255) NOT NULL DEFAULT '' COMMENT '详细地址' AFTER `city`,
ADD COLUMN `callback_domain` varchar(255) NOT NULL DEFAULT '' COMMENT '回调域名' AFTER `address`,
ADD COLUMN `callback_ip_whitelist` text COMMENT '回调IP白名单' AFTER `callback_domain`,
ADD COLUMN `risk_level` varchar(20) NOT NULL DEFAULT 'standard' COMMENT '风控等级low/standard/high' AFTER `callback_ip_whitelist`,
ADD COLUMN `settlement_mode` varchar(20) NOT NULL DEFAULT 'auto' COMMENT '结算方式auto/manual' AFTER `risk_level`,
ADD COLUMN `settlement_cycle` varchar(20) NOT NULL DEFAULT 't1' COMMENT '结算周期d0/t1/manual' AFTER `settlement_mode`,
ADD COLUMN `settlement_account_name` varchar(100) NOT NULL DEFAULT '' COMMENT '结算账户名' AFTER `settlement_cycle`,
ADD COLUMN `settlement_account_no` varchar(100) NOT NULL DEFAULT '' COMMENT '结算账户号' AFTER `settlement_account_name`,
ADD COLUMN `settlement_bank_name` varchar(100) NOT NULL DEFAULT '' COMMENT '结算银行名称' AFTER `settlement_account_no`,
ADD COLUMN `settlement_bank_branch` varchar(100) NOT NULL DEFAULT '' COMMENT '结算支行名称' AFTER `settlement_bank_name`,
ADD COLUMN `single_limit` decimal(12,2) NOT NULL DEFAULT 0.00 COMMENT '单笔限额(元)' AFTER `settlement_bank_branch`,
ADD COLUMN `daily_limit` decimal(12,2) NOT NULL DEFAULT 0.00 COMMENT '日限额(元)' AFTER `single_limit`,
ADD COLUMN `remark` varchar(500) NOT NULL DEFAULT '' COMMENT '备注' AFTER `daily_limit`,
ADD COLUMN `extra` json DEFAULT NULL COMMENT '扩展字段(JSON)' AFTER `remark`;
ALTER TABLE `ma_mer`
ADD KEY `idx_group_code` (`group_code`),
ADD KEY `idx_contact_phone` (`contact_phone`),
ADD KEY `idx_status` (`status`);
-- =========================================================
-- 2. Expand ma_pay_app for merchant app backend settings
-- =========================================================
ALTER TABLE `ma_pay_app`
ADD COLUMN `package_code` varchar(32) NOT NULL DEFAULT '' COMMENT '商户套餐编码' AFTER `app_name`,
ADD COLUMN `notify_url` varchar(255) NOT NULL DEFAULT '' COMMENT '异步通知地址' AFTER `package_code`,
ADD COLUMN `return_url` varchar(255) NOT NULL DEFAULT '' COMMENT '同步跳转地址' AFTER `notify_url`,
ADD COLUMN `callback_mode` varchar(20) NOT NULL DEFAULT 'server' COMMENT '回调模式server/server+page/manual' AFTER `return_url`,
ADD COLUMN `sign_type` varchar(20) NOT NULL DEFAULT 'md5' COMMENT '签名方式' AFTER `callback_mode`,
ADD COLUMN `order_expire_minutes` int(11) NOT NULL DEFAULT 30 COMMENT '订单超时时间(分钟)' AFTER `sign_type`,
ADD COLUMN `callback_retry_limit` int(11) NOT NULL DEFAULT 6 COMMENT '回调重试次数' AFTER `order_expire_minutes`,
ADD COLUMN `ip_whitelist` text COMMENT 'IP白名单' AFTER `callback_retry_limit`,
ADD COLUMN `amount_min` decimal(12,2) NOT NULL DEFAULT 0.00 COMMENT '单笔最小金额' AFTER `ip_whitelist`,
ADD COLUMN `amount_max` decimal(12,2) NOT NULL DEFAULT 0.00 COMMENT '单笔最大金额' AFTER `amount_min`,
ADD COLUMN `daily_limit` decimal(12,2) NOT NULL DEFAULT 0.00 COMMENT '日限额' AFTER `amount_max`,
ADD COLUMN `notify_enabled` tinyint(1) NOT NULL DEFAULT 1 COMMENT '是否开启通知0-否,1-是' AFTER `daily_limit`,
ADD COLUMN `remark` varchar(500) NOT NULL DEFAULT '' COMMENT '备注' AFTER `notify_enabled`,
ADD COLUMN `extra` json DEFAULT NULL COMMENT '扩展字段(JSON)' AFTER `remark`;
ALTER TABLE `ma_pay_app`
ADD KEY `idx_api_type` (`api_type`),
ADD KEY `idx_status` (`status`);
-- =========================================================
-- 3. Merchant backend user table
-- =========================================================
CREATE TABLE IF NOT EXISTS `ma_mer_user` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`mer_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '商户ID',
`username` varchar(50) NOT NULL DEFAULT '' COMMENT '登录账号',
`password` varchar(255) DEFAULT NULL COMMENT '登录密码hash',
`nick_name` varchar(50) NOT NULL DEFAULT '' COMMENT '昵称',
`avatar` varchar(255) NOT NULL DEFAULT '' COMMENT '头像地址',
`mobile` varchar(20) NOT NULL DEFAULT '' COMMENT '手机号',
`email` varchar(100) NOT NULL DEFAULT '' COMMENT '邮箱',
`role_code` varchar(32) NOT NULL DEFAULT 'owner' COMMENT '角色编码',
`is_owner` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否商户主账号0-否,1-是',
`status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '状态0-禁用,1-启用',
`login_ip` varchar(45) NOT NULL DEFAULT '' COMMENT '最后登录IP',
`login_at` datetime DEFAULT NULL COMMENT '最后登录时间',
`created_at` datetime DEFAULT NULL COMMENT '创建时间',
`updated_at` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_username` (`username`),
KEY `idx_mer_id` (`mer_id`),
KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商户后台用户表';
-- =========================================================
-- 4. Compatibility views for legacy code paths
-- =========================================================
DROP VIEW IF EXISTS `ma_merchant`;
CREATE VIEW `ma_merchant` AS
SELECT
`id`,
`merchant_no`,
`merchant_name`,
`merchant_short_name`,
`merchant_type`,
`group_code`,
`funds_mode`,
`legal_name`,
`contact_name`,
`contact_phone`,
`contact_email`,
`website`,
`province`,
`city`,
`address`,
`callback_domain`,
`callback_ip_whitelist`,
`risk_level`,
`settlement_mode`,
`settlement_cycle`,
`settlement_account_name`,
`settlement_account_no`,
`settlement_bank_name`,
`settlement_bank_branch`,
`single_limit`,
`daily_limit`,
`status`,
`remark`,
`extra`,
`created_at`,
`updated_at`
FROM `ma_mer`;
DROP VIEW IF EXISTS `ma_merchant_app`;
CREATE VIEW `ma_merchant_app` AS
SELECT
`id`,
`mer_id` AS `merchant_id`,
`api_type`,
`app_code` AS `app_id`,
`app_secret`,
`app_name`,
`package_code`,
`notify_url`,
`return_url`,
`callback_mode`,
`sign_type`,
`order_expire_minutes`,
`callback_retry_limit`,
`ip_whitelist`,
`amount_min`,
`amount_max`,
`daily_limit`,
`notify_enabled`,
`status`,
`remark`,
`extra`,
`created_at`,
`updated_at`
FROM `ma_pay_app`;
DROP VIEW IF EXISTS `ma_pay_method`;
CREATE VIEW `ma_pay_method` AS
SELECT
`id`,
`type` AS `method_code`,
`name` AS `method_name`,
`icon`,
`sort`,
`status`,
`created_at`,
`updated_at`
FROM `ma_pay_type`;
SET FOREIGN_KEY_CHECKS = 1;