mirror of
https://gitee.com/technical-laohu/mpay_v2_webman.git
synced 2026-04-04 17:14:26 +08:00
170 lines
8.1 KiB
SQL
170 lines
8.1 KiB
SQL
-- 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;
|